ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深入理解C++ 模板<四> 变量模板

深入理解C++ 模板<四> 变量模板 变量模板Variable Template是 C14 引入的一项特性它允许你定义一个模板化的变量或静态数据成员其类型和/或值可以随模板参数变化。简单来说你可以为一系列相关的常量或变量创建一个通用的模板定义而不必为每种类型单独编写重载或特化。核心概念与语法是什么变量模板定义了一个变量族a family of variables。当模板参数被具体化时就实例化出一个具体的变量。为什么用它特别适合定义类型相关的常量如pi对float、double取不同精度、类型特征type traits的快捷访问如std::is_integral_vT或者需要根据类型变化的值。如何用使用template关键字加上using或者直接定义变量即可。cpp// 语法 template模板形参列表 类型 变量名 初始值;#include iostream // 定义一个变量模板 pi默认值为 0但实际我们会特化 // 注意这里直接给一个通用默认值但对特定类型进行特化更常见。 templatetypename T constexpr T pi T(3.1415926535897932385); // 通用定义 // 不过通常我们会对特定类型提供更精确的特化可选 // 但这里通用定义已经可以工作因为 T(3.14...) 会转换为对应类型。 int main() { // 使用变量模板实例化为 float 和 double float pi_float pifloat; double pi_double pidouble; // 甚至可以用于整数会截断 int pi_int piint; std::cout pi as float: pi_float std::endl; std::cout pi as double: pi_double std::endl; std::cout pi as int: pi_int std::endl; return 0; }
返回列表