STL_type_traits.h

✍✍✍

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
39
40
41
42
43
44
45
#pragma once
#ifndef MYTINYSTL_TYPE_TRAITS_H_
#define MYTINYSTL_TYPE_TRAITS_H_

//这个头文件用于提取类型信息

//use standard header for type_traits
#include <type_traits>

namespace mystl
{
//helper struct

template <class T,T v>
struct m_integral_constant
{ //常量表达式,在编译期就可以计算出结果的表达式
static constexpr T value = v;
};

template <bool b>
//类型重命名
using m_bool_constant = m_integral_constant<bool, b>;

//typedef m_bool_constant<true> m_true_type;
using m_true_type = m_bool_constant<true>;
using m_flase_type = m_bool_constant<false>;

/*************************************************************/
//type_traits

//is_pair

// --- forward declaration begin
template <class T1,class T2>
struct pair;
// --- forward declaration end

template <class T>
struct is_pair : mystl::m_false_type{};

template <class T1,class T2>
struct is_pair<mystl::pair<T1,T2>>:mystl::m_true_type{};
}

#endif // !MYTINYSTL_TYPE_TRAITS_H_

本文标题:STL_type_traits.h

文章作者:zhz

发布时间:2020年05月17日 - 17:05

最后更新:2020年05月17日 - 17:05

原始链接:http://yoursite.com/2020/05/17/STL-type-traits-h/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。