Support Class Library
A set of tools providing classes and utility
Main Page
Related Pages
+
Namespaces
Namespace List
+
Namespace Members
+
All
_
a
c
d
e
f
h
i
l
m
n
o
p
r
s
t
u
v
w
+
Functions
_
a
c
d
e
f
h
i
l
m
n
o
p
r
s
t
u
w
Variables
+
Typedefs
a
c
d
e
f
h
i
l
m
n
r
s
t
u
v
+
Classes
Class List
Class Index
Class Hierarchy
+
Class Members
+
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
~
+
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
~
+
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
+
Typedefs
a
c
d
e
f
g
i
k
l
m
n
o
p
q
r
s
t
v
Related Functions
+
Files
File List
+
File Members
+
All
a
c
d
m
o
r
s
t
v
Functions
+
Macros
a
c
d
m
r
s
t
v
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Friends
Macros
Pages
include
scl
tools
meta
type_mod.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <type_traits>
4
5
#define SCL_TYPEMOD(alias) \
6
template <class T>\
7
using alias##_t = typename std::alias<T>::type;
8
9
namespace
scl
{
10
namespace
tools{
11
namespace
meta{
12
SCL_TYPEMOD
(remove_cv)
13
SCL_TYPEMOD
(remove_const)
14
SCL_TYPEMOD
(remove_volatile)
15
16
SCL_TYPEMOD
(add_cv)
17
SCL_TYPEMOD
(add_const)
18
SCL_TYPEMOD
(add_volatile)
19
20
SCL_TYPEMOD
(remove_reference)
21
SCL_TYPEMOD
(add_lvalue_reference)
22
SCL_TYPEMOD
(add_rvalue_reference)
23
24
SCL_TYPEMOD
(remove_pointer)
25
SCL_TYPEMOD
(add_pointer)
26
27
SCL_TYPEMOD
(make_signed)
28
SCL_TYPEMOD
(make_unsigned)
29
30
SCL_TYPEMOD
(remove_extent)
31
SCL_TYPEMOD
(remove_all_extents)
32
33
SCL_TYPEMOD
(decay)
34
35
template <class T>
36
using
remove_cv_ref_t
=
remove_cv_t
<
remove_reference_t
<T>>;
37
38
namespace details{
43
template
<
class
T>
44
struct
NoOp
{
using
type
= T; };
45
}
46
47
template
<
class
T>
48
using
no_op_t
=
typename
details::NoOp<T>::type
;
49
50
#ifdef SCL_ENABLE_DEPRECATED_TYPEMODS
51
SCL_TYPEMOD
(result_of)
52
#endif
53
}
54
}
55
}
56
57
#undef SCL_TYPEMOD
scl::tools::meta::remove_reference_t
typename std::remove_reference< T >::type remove_reference_t
Definition:
type_mod.h:20
scl
Global namespace of the SCL.
Definition:
alias.hpp:3
scl::tools::meta::details::NoOp::type
T type
Definition:
type_mod.h:44
scl::tools::meta::details::NoOp
Type construct that exposes a single type that is its type argument.
Definition:
type_mod.h:44
scl::tools::meta::remove_cv_t
typename std::remove_cv< T >::type remove_cv_t
Definition:
type_mod.h:12
scl::tools::meta::remove_cv_ref_t
remove_cv_t< remove_reference_t< T > > remove_cv_ref_t
Definition:
type_mod.h:36
scl::tools::meta::no_op_t
typename details::NoOp< T >::type no_op_t
Definition:
type_mod.h:48
SCL_TYPEMOD
#define SCL_TYPEMOD(alias)
Definition:
type_mod.h:5
Generated by
1.8.13