fork download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. namespace A { class Foo {}; }
  5. namespace B { class Foo {}; class Bar {}; }
  6. namespace C { class Foo {}; }
  7.  
  8. template<typename T>
  9. struct is_Foo: public std::integral_constant<bool,
  10. std::is_same<T, A::Foo>::value || std::is_same<T, B::Foo>::value ||
  11. std::is_same<T, C::Foo>::value> {};
  12.  
  13. int main() {
  14. std::cout << is_Foo<A::Foo>::value << ' ' << is_Foo<B::Foo>::value << ' '
  15. << is_Foo<C::Foo>::value << ' ' << is_Foo<B::Bar>::value
  16. << std::endl;
  17.  
  18. return (0);
  19. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
1 1 1 0