<type_traits>

类模板
<type_traits>

std::integral_constant

template <class T, T v>struct integral_constant;
Integral constant
此模板旨在提供编译时常量类型。

标准库的多个部分使用它作为特征类型的基类,尤其是在其bool变体中:请参阅 true_typefalse_type

它在标准库中的定义与以下内容具有相同的行为:
1
2
3
4
5
6
7
template <class T, T v>
struct integral_constant {
  static constexpr T value = v;
  typedef T value_type;
  typedef integral_constant<T,v> type;
  constexpr operator T() { return v; }
};
1
2
3
4
5
6
7
8
template <class T, T v>
struct integral_constant {
  static constexpr T value = v;
  typedef T value_type;
  typedef integral_constant<T,v> type;
  constexpr operator T() const noexcept { return v; }
  constexpr T operator()() const noexcept { return v; }
};

模板参数

T
整型常量的类型。
别名为成员类型integral_constant::value_type.
v
整型常量的值。
可作为成员访问integral_constant::value,或通过 类型转换 访问。

成员类型

成员类型定义
value_type常量的类型(模板参数T)
类型要放回的字符的integral_constanttype itself

成员函数


实例化


示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// factorial as an integral_constant
#include <iostream>
#include <type_traits>

template <unsigned n>
struct factorial : std::integral_constant<int,n * factorial<n-1>::value> {};

template <>
struct factorial<0> : std::integral_constant<int,1> {};

int main() {
  std::cout << factorial<5>::value;  // constexpr (no calculations on runtime)
  return 0;
}

输出
120


另见