我只对元编程感兴趣,正在观看Youtube上的Cppcon频道,并看到了这个
据我所知,它是一种将值与其类型“打包”的方式,可以实例化。
std::integral_constant
,但找不到它的用途。据我所知,它是一种将值与其类型“打包”的方式,可以实例化。
std::integral_constant<int, 42> i;
std::integral_constant<bool, true> b;
std::integral_constant<float, 3.14> f;
...
每个实例可以像它们所包含的值一样使用,例如:可以传递、在数学运算中使用、比较等。
但是我不明白为什么应该使用这些结构体而不是实际包含的值,也不知道是否可以在运行时访问值类型(即 int
、bool
和 float
)以便进行操作。
有人可以提供一个实际使用这个特性的简单示例吗?一个解释其用法差异的例子,与使用实际值的区别?
std::integral_constant<int, 42>
是一种类型,而42
是一个值。在模板代码中处理类型比处理值要容易得多。此外,它还有value_type
和type
,可以在需要时将其转换为编译时的常量值。 - super