15 struct __B__ :
public __A__ {};
24 template<
class U,
class V>
25 inline void print(std::ostream& out,
const char* uname,
const char* vname)
30 out << setw(36) << left << string(
"<") + string(uname) + string(
",") + string(vname) + string(
">");
31 out << setw(4) <<
'.' << setw(8) << left << JConversion<U, V>::is_same;
32 out << setw(4) <<
'.' << setw(8) << left << JConversion<U, V>::is_derived;
45 #define PRINT(OUT, U, V) print<U,V>(OUT, #U, #V)
54 int main(
int argc,
char **argv)
63 JParser<> zap(
"Example program to test class inspection.");
69 catch(
const exception &error) {
70 FATAL(error.what() << endl);
75 cout << setw(36) << left <<
"name";
76 cout << setw(12) <<
" same ";
77 cout << setw(12) <<
" derived";
82 PRINT(cout, __A__, __A__);
83 PRINT(cout, __B__, __A__);
84 PRINT(cout, __A__, __B__);
85 PRINT(cout, __A__, __B__);
88 ASSERT(( JConversion<__A__, __A__>::is_same));
89 ASSERT(( JConversion<__B__, __A__>::is_derived));
90 ASSERT((!JConversion<__A__, __B__>::is_same));
91 ASSERT((!JConversion<__A__, __B__>::is_derived));