C++14 变量模板

定义
  • 变量模板定义一族变量或者类静态数据成员。
template < parameter-list > variable-declaration
定义举例
  • 定义一族变量
template<class T>
constexpr T pi = T(3.1415926);
  • 定义一族类静态数据成员
using namespace std::literals;
struct matrix_constants
{
    template<class T>
    using pauli = hermitian_matrix<T, 2>;
 
    template<class T> 
    static constexpr pauli<T> sigmaX = { { 0, 1 }, { 1, 0 } }; 
};

// 当然也可以在类外定义
struct limits {
    template<typename T>
    static const T min; 
};
template<typename T>
const T limits::min = {};
使用
  • 指明类型
std::cout << pi<int>;
  • 变量模板可以有默认模板实参
template<class T = double>
constexpr T pi = T(3.1415926);
std::cout << pi<>;
std::cout << pi<float>;
  • 变量模板可以用非类型参数进行参数化
template<int N>
std::array<int, N> arr{};
  • 变量模板可以通过处于命名空间作用域的模板引入
template<class T>
T circular_area(T r) 
{
    return pi<T> * r * r; 
}
  • 在C++14引入变量模板前,参数化变量通常实现为类模板的静态数据成员或者constexpr函数模板
参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值