fork(1) download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. template <typename T, typename = T>
  5. struct is_movable : std::false_type {};
  6.  
  7. template <typename T>
  8. struct is_movable<T, decltype(T(std::declval<std::decay_t<T>>()))> : std::true_type {};
  9.  
  10. struct NonMovable
  11. {
  12. NonMovable(NonMovable&&) = delete;
  13. };
  14.  
  15. int main()
  16. {
  17. std::cout << is_movable<int>::value << std::endl;
  18. std::cout << is_movable<NonMovable>::value << std::endl;
  19.  
  20. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
1
0