1 // file      : cutl/meta/class-p.hxx
2 // copyright : Copyright (c) 2009-2017 Code Synthesis Tools CC
3 // license   : MIT; see accompanying LICENSE file
4 
5 #ifndef CUTL_META_CLASS_HXX
6 #define CUTL_META_CLASS_HXX
7 
8 #include <cutl/meta/answer.hxx>
9 
10 namespace cutl
11 {
12   namespace meta
13   {
14     // g++ cannot have these inside class_p.
15     //
16     template <typename Y> no class_p_test (...);
17     template <typename Y> yes class_p_test (void (Y::*) ());
18 
19     template <typename X>
20     struct class_p
21     {
22       static bool const r = sizeof (class_p_test<X> (0)) == sizeof (yes);
23     };
24   }
25 }
26 
27 #endif // CUTL_META_CLASS_HXX
28