integral_constant

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

√

Atlas A3 训练系列产品/Atlas A3 推理系列产品

√

Atlas A2 训练系列产品/Atlas A2 推理系列产品

√

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品AI Core

x

Atlas 推理系列产品Vector Core

x

Atlas 训练系列产品

x

功能说明

integral_constant是一个带有模板参数的结构体,定义在<type_traits>头文件中,用于封装一个编译时常量整数值,是标准库中许多类型特性和编译时计算的基础组件。

integral_constant的功能如下:

  1. 封装编译时常量,将一个int或bool类型的值封装为特定类型,以便该值可以在编译时被操作和传递。
  2. 类型标识,每个不同的integral_constant实例都是唯一的类型,可用于模板特化或重载决议。
  3. 隐式转换时支持转换为其封装的值类型,便于在需要该值的上下文中直接使用。
  4. 函数调用运算符允许像调用函数一样调用实例,以获取其值。

integral_constant提供了多个常用的特化版本,具体如下:

函数原型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
template <typename Tp, Tp v>
struct integral_constant
{
    static constexpr const Tp value = v;
    using value_type = Tp;
    using type = integral_constant;
    inline constexpr operator value_type() const noexcept;
    inline constexpr value_type operator()() const noexcept;
};

template <size_t v>
using Int = integral_constant<size_t, v>;

参数说明

表1 模板参数说明

参数名

含义

Tp

数值的数据类型。

v

常量数值。

约束说明

返回值说明

无

调用示例