blob: 2a8aa815eec6fa38821bee4391fae00628a5c310 (
plain)
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
|
#include "util.h"
namespace {
struct Base1 {
int a;
float b;
};
struct Base2 {
int x;
float y;
};
struct Sub : Base1, Base2 {
double value;
};
static_assert(std::is_same_v<MemberValueType<&Base1::a>, int>);
static_assert(std::is_same_v<MemberValueType<&Base2::y>, float>);
static_assert(std::is_same_v<MemberValueType<&Sub::a>, int>);
static_assert(std::is_same_v<MemberValueType<&Sub::y>, float>);
static_assert(std::is_same_v<MemberValueType<&Sub::value>, double>);
static_assert(std::is_same_v<ContainerType<&Base1::a>, Base1>);
static_assert(std::is_same_v<ContainerType<&Base2::y>, Base2>);
static_assert(std::is_same_v<ContainerType<&Sub::a>, Base1>);
static_assert(std::is_same_v<ContainerType<&Sub::y>, Base2>);
static_assert(std::is_same_v<ContainerType<&Sub::value>, Sub>);
}
|