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
| #include <type_traits>
#include <iostream>
template <typename T>
struct add_const_ref
{
typedef const T& type;
};
template <typename T>
struct add_const_ref<T&>
{
typedef T& type;
};
template <typename T>
struct add_const_ref2 : std::conditional<std::is_reference<T>::value,
T,
const T&>
{
};
int main()
{
std::cout << std::is_same<add_const_ref<int&>::type, int&>::value << std::endl;
std::cout << std::is_same<add_const_ref<int>::type, const int&>::value << std::endl;
std::cout << std::is_same<add_const_ref2<int&>::type, int&>::value << std::endl;
std::cout << std::is_same<add_const_ref2<int>::type, const int&>::value << std::endl;
}
|
沒有留言:
張貼留言