summaryrefslogtreecommitdiff
path: root/test/test-static-util.cpp
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>);
}