春暖花开

C++ 笔记

1
2
3
4
5
6
7
#include <type_traits>
std::is_same<T, U> // 判断两个类型是否相同
std::is_same<T, U>::value // 返回 true 或 false
std::decay_t<T> // 返回类型信息,去除 const,引用等。
std::decay_t<decltype(obj)>
1
2
3
4
5
#include <typeinfo>
typeid(type)
typeid(expr) // 返回 class type_info
typeid(expr).name() // 返回 type 的名字c-str

属性指示符:

1
2
3
[[noreturn]] //表示函数不返回值
[[maybe_unused]] //抑制未使用变量的警告
[[fallthrough]] //出现在switch语句中,抑制上一句case没有break而引起的fallthrough的警告

1
2
3
4
5
6
7
8
9
10
11
12
13
// enable_if 可能的实现,若B为真,则 std::enable_if
//有一个与T相等的public typedef类型
#include <type_traits>
template<bool B, class T = void>
struct enable_if {};
template<class T>
struct enable_if<true, T> { typedef T type; };
//Since C++14
template< bool B, class T = void >
using enable_if_t = typename enable_if<B,T>::type;
0%