以下のようなクラスを考えます: struct Hoge { Hoge(){} Hoge( Hoge const& ) = default; // Copy は定義されている Hoge( Hoge && ) = delete; // しかし, Move は明示的に delete されている // 代入は(とりあえず)考えないことにする void operator=( Hoge const& ) = delete; }; int main() { Hoge x; Hoge y = x; // OK Hoge z = std::move(x); // NG } こういうクラスに対し, std::is_copy_constructible や std::is_move_constructible によってコピー/ムーブが出来るか否かを問い合わせると, int main() { std::cout