25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
668 B

  1. #pragma once
  2. #include <cpputils/mp/core/const.h>
  3. namespace utl {
  4. namespace mp {
  5. namespace __impl /* forward declaration */
  6. {
  7. template<typename T, typename = void>
  8. struct is_default_impl;
  9. }
  10. template<typename T>
  11. using is_default = __impl::is_default_impl<T>;
  12. namespace __impl /* implementation */
  13. {
  14. struct default_ { };
  15. template<typename T, typename>
  16. struct is_default_impl :
  17. public c_false
  18. { };
  19. template<typename T>
  20. struct is_default_impl<T, decltype((void)static_cast<default_>(std::declval<T>()))> :
  21. public c_true
  22. { };
  23. }
  24. }
  25. }