模板类型后面的三个点...称为模板参数包, 模板参数包也可以是特化的
推导后的模板参数包再通过参数名称后的三个点...来进行解包(包扩展)
变长模板自然也可以用在函数模板中, 称为函数参数包....模板参数列表
通用属性列表
lambda捕捉列表
理解包扩展的核心是谨记其将...前面的直接成员进行多次使用
C++11还引入了sizeof...()操作符来计算参数包中的参数数量, 返回一个size_t...// 当前参数列表的第一个参数作为类型T被捕获, 后面的留作递归
templateT, typename......, 但总是定义了从std::atomicT>到T的转换方便使用
各种不同的原子类型定义了不同的操作, 其中绝大多数原子类型都支持load(), store()和exchange()三大成员函数, 这三种操作在其赋值操作符中广泛使用...nullptr
nullptr是"指针空值类型"的编译期常量关键字, 该类型命名为nullptr_t, 即typedef decltype(nullptr) nullptr_t; 这是为了能给这个特殊的类型进行操作符重载