gpt4 book ai didi

c++11 - 为什么没有标准的 boost::enable_if 等价物?

转载 作者:行者123 更新时间:2023-12-01 12:20:36 24 4
gpt4 key购买 nike

在 C++11 中,std::enable_if被添加到标准库中。相当于boost::enable_if_c其条件为 bool .这适用于相当简单的条件,但是只要您使用将结果保存在 value 中的谓词。常量,你必须使用更详细的结构 my_predicate<MyArgs>::value把它变成bool .这正是boost::enable_if (不带 _c 后缀)专为。

为什么标准库中没有等价物?

最佳答案

标准库在这里走了一条不同的路。 C++17 为所有返回 ::value 的类型特性添加了变量模板快捷方式。模式总是

template <typename... Args>
some_trait_v = some_trait<Args...>::value;

例如你可以写

std::enable_if<std::is_same_v<T1,T2>>

此外,enable_if 的参数可能是 constexpr 表达式的结果,例如

std::enable_if<some_constexpr_function<T1,T2>()>

这种方式更通用,不依赖于传递必须具有 value 成员的内容。

关于c++11 - 为什么没有标准的 boost::enable_if 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44516718/

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