// { dg-options -std=c++0x } template struct NonCopyable { NonCopyable() = default; NonCopyable(NonCopyable const&); }; template<> NonCopyable::NonCopyable(NonCopyable const&) = delete; // { dg-error "declared" } template NonCopyable::NonCopyable(NonCopyable const&) = default; template<> NonCopyable::NonCopyable(NonCopyable const&) = delete; // { dg-error "declared" } int main() { NonCopyable nc_dbl; NonCopyable nc_dbl_cpy(nc_dbl); // { dg-error "use" } NonCopyable nc_int; NonCopyable nc_int_cpy(nc_int); // { dg-error "use" } NonCopyable nc_char; NonCopyable nc_char_cpy(nc_char); }