gpt4 book ai didi

c++ - std::integral_constant 背后的原因是什么?

转载 作者:可可西里 更新时间:2023-11-01 17:36:34 26 4
gpt4 key购买 nike

它的实际用例是什么?

std::integral_constant

我可以理解这是一个值为 2 的包装器:

typedef std::integral_constant<int, 2> two_t

但为什么不直接使用 2 或用 2 定义一个 const int 值呢?

最佳答案

在少数情况下 std::integral_constant非常有用。

其中之一是标签分发。例如,std::true_typestd::false_type只是std::integral_constant<bool, true>std::integral_constant<bool, false>分别。每个 type trait源自 std::true_typestd::false_type ,它启用标签分发:

template <typename T>
int foo_impl(T value, std::true_type) {
// Implementation for arithmetic values
}

template <typename T>
double foo_impl(T value, std::false_type) {
// Implementation for non-arithmetic values
}

template <typename T>
auto foo(T value) {
// Calls the correct implementation function, which return different types.
// foo's return type is `int` if it calls the `std::true_type` overload
// and `double` if it calls the `std::false_type` overload
return foo_impl(value, std::is_arithmetic<T>{});
}

此外,模板元编程库通常只有类型列表的算法,而不是值列表。如果你想对值使用这些算法,你必须使用类似 std::integral_constant 的东西。

关于c++ - std::integral_constant 背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49205196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com