C++ Utilities
4.10.0
Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities
tests
traitstests.cpp
Go to the documentation of this file.
1
#include "../misc/traits.h"
2
3
#include <list>
4
#include <map>
5
#include <string>
6
#include <vector>
7
8
using namespace
std
;
9
using namespace
Traits
;
10
11
struct
SomeStruct
{
12
string
foo
;
13
int
bar
;
14
};
15
16
static_assert(!
Bool<false>::value
,
"Bool<false>"
);
17
static_assert(
Bool<true>::value
,
"Bool<true>"
);
18
static_assert(!
Not
<
Bool<true>
>::value,
"Not"
);
19
static_assert(!
Any
<
Bool<false>
,
Bool<false>
>::value,
"Any: negative case"
);
20
static_assert(
Any
<
Bool<true>
,
Bool<false>
>::value,
"Any: positive case"
);
21
static_assert(!
All
<
Bool<true>
,
Bool<false>
>::value,
"All: negative case"
);
22
static_assert(
All
<
Bool<true>
,
Bool<true>
>::value,
"All: positive case"
);
23
24
static_assert(!
IsSpecializationOf<string, basic_stringbuf>::value
,
"IsSpecializationOf: negative case"
);
25
static_assert(
IsSpecializationOf<string, basic_string>::value
,
"IsSpecializationOf: positive case"
);
26
27
static_assert(!
IsIteratable<int>::value
,
"IsIterator: negative case"
);
28
static_assert(!
IsIteratable<SomeStruct>::value
,
"IsIterator: negative case"
);
29
static_assert(
IsIteratable<string>::value
,
"IsIterator: positive case"
);
30
static_assert(
IsIteratable
<vector<int>>::value,
"IsIterator: positive case"
);
31
static_assert(
IsIteratable
<list<string>>::value,
"IsIterator: positive case"
);
32
static_assert(
IsIteratable
<map<string, string>>::value,
"IsIterator: positive case"
);
33
static_assert(
IsIteratable
<initializer_list<double>>::value,
"IsIterator: positive case"
);
34
35
static_assert(!
IsCString<string>::value
,
"IsCString: negative case"
);
36
static_assert(!
IsCString
<
int
[]>::value,
"IsCString: negative case"
);
37
static_assert(!
IsCString<int *>::value
,
"IsCString: negative case"
);
38
static_assert(
IsCString
<
char
[]>::value,
"IsCString: positive case"
);
39
static_assert(
IsCString<char *>::value
,
"IsCString: positive case"
);
40
static_assert(
IsCString<const char *>::value
,
"IsCString: positive case"
);
41
static_assert(!
IsString<int *>::value
,
"IsString: negative case"
);
42
static_assert(!
IsString<stringstream>::value
,
"IsString: negative case"
);
43
static_assert(
IsString<const char *>::value
,
"IsString: positive case"
);
44
static_assert(
IsString<string>::value
,
"IsCString: positive case"
);
45
static_assert(
IsString<u16string>::value
,
"IsCString: positive case"
);
Traits::IsIteratable
decltype(Detail::isIteratableImpl< T >(0)) IsIteratable
Definition:
traits.h:71
SomeStruct
Definition:
traitstests.cpp:11
SomeStruct::foo
string foo
Definition:
traitstests.cpp:12
SomeStruct::bar
int bar
Definition:
traitstests.cpp:13
Traits::IsSpecializationOf
Definition:
traits.h:39
Traits::All
Definition:
traits.h:28
std
STL namespace.
Traits::IsCString
Definition:
traits.h:45
Traits::Any
Definition:
traits.h:23
Traits::IsString
Definition:
traits.h:48
Traits
Contains traits for conveniently exploiting SFINAE.
Definition:
traits.h:8
Traits::Bool
Definition:
traits.h:18
Generated on Sun Oct 8 2017 20:31:22 for C++ Utilities by
1.8.13