fork(1) download
  1. #include <iostream>
  2.  
  3. template<typename T>
  4. struct to_void
  5. {
  6. typedef void type;
  7. };
  8.  
  9. class Foo
  10. {
  11. template <typename T, typename dummy>
  12. friend struct has_TD;
  13.  
  14. typedef int TD;
  15. };
  16.  
  17. template <typename T, typename dummy = void>
  18. struct has_TD : std::false_type {};
  19.  
  20. template <typename T>
  21. struct has_TD<T, typename to_void<typename T::TD>::type > : std::true_type{};
  22.  
  23. int main()
  24. {
  25. std::cout << std::boolalpha << has_TD<Foo>::value << std::endl;
  26. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function 'int main()':
prog.cpp:14:14: error: 'typedef int Foo::TD' is private
  typedef int TD;
              ^
prog.cpp:25:33: error: within this context
  std::cout << std::boolalpha << has_TD<Foo>::value << std::endl;
                                 ^
stdout
Standard output is empty