In c++11, header <type_traits><type_traits> defines a set of following functions:
is_constructible is_default_contructible is_copy_contructible is_move_contructible is_assignable is_copy_assignable is_move_assignable is_destructible http://en.cppreference.com/w/cpp/types
You can use them to test for existence of implicitly generated methods at compile time, eg.:
std::is_constructible<ClassName>::value