-
Notifications
You must be signed in to change notification settings - Fork 0
/
is_base_of_test.cpp
36 lines (25 loc) · 1.12 KB
/
is_base_of_test.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
#include "is_base_of.h"
#include <cstdio>
using gobj::is_base_of;
struct Foo {};
struct Empty {};
struct Bar { Foo parent; };
struct Baz { Bar parent; };
struct Qux { Foo parent; Empty empty; };
struct NoDefinition;
struct IntStruct { int whatever; };
int main(int argc, char **argv)
{
printf("is_base_of<Foo, Bar>: %d\n", is_base_of<Foo, Bar>); // true
printf("is_base_of<Bar, Foo>: %d\n", is_base_of<Bar, Foo>); // false
printf("is_base_of<Bar, Baz>: %d\n", is_base_of<Bar, Baz>); // true
printf("is_base_of<Foo, Baz>: %d\n", is_base_of<Foo, Baz>); // true
printf("is_base_of<Foo, Qux>: %d\n", is_base_of<Foo, Qux>); // true
printf("is_base_of<Empty, Qux>: %d\n", is_base_of<Empty, Qux>); // false
printf("is_base_of<Baz, Qux>: %d\n", is_base_of<Baz, Qux>); // false
printf("is_base_of<Foo, NoDefinition>: %d\n", is_base_of<Foo, NoDefinition>); // false
printf("is_base_of<int, float>: %d\n", is_base_of<int, float>); // false
printf("is_base_of<int, IntStruct>: %d\n", is_base_of<int, IntStruct>); // true
return 0;
}