-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathvariable_traits.cpp
More file actions
38 lines (31 loc) · 1.08 KB
/
variable_traits.cpp
File metadata and controls
38 lines (31 loc) · 1.08 KB
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
37
38
#include "mirrow/util/variable_traits.hpp"
#include <string>
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
using namespace mirrow::util;
float* gVar;
struct Clazz {
float var;
static float svar;
const float cvar;
};
TEST_CASE("varibale pointer traits") {
SECTION("global variable") {
using traits = variable_pointer_traits<&gVar>;
static_assert(!traits::is_member);
static_assert(std::is_same_v<traits::pointer, float**>);
static_assert(std::is_same_v<traits::type, float*>);
}
SECTION("static class variable") {
using traits = variable_pointer_traits<&Clazz::svar>;
static_assert(!traits::is_member);
static_assert(std::is_same_v<traits::pointer, float*>);
static_assert(std::is_same_v<traits::type, float>);
}
SECTION("const class variable") {
using traits = variable_pointer_traits<&Clazz::cvar>;
static_assert(traits::is_member);
static_assert(std::is_same_v<traits::pointer, const float(Clazz::*)>);
static_assert(std::is_same_v<traits::type, const float>);
}
}