gpt4 book ai didi

C++14 对 is_same::value 使用别名

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

This question使用 is_same<uint64_t, decltype(val)>::value .

我希望有一个 C++14 using alias : is_same_v类似于辅助类型:conditional_t , enable_if_t , 和 tuple_element_t我在 my answer 中使用.因为我使用这些函数中的任何一个的唯一目的就是获取 type .所以 *_t助手才有意义。

这让我想到了我的问题,为什么没有 using alias is_same_v在 C++14 中?我唯一用的is_same因为它是 value .也许使用 is_same通常不是用于模板声明吗?

最佳答案

简介

引入std::enable_if_t<cond, T>的主要原因作为 std::enable_if<cond, T>::type 的缩写形式不仅仅是削减 4 个字符。

std::enable_if , 以及同类的其他类型特征,主要用于依赖上下文,当(B) (A) 是相当痛苦的em> 就足够了:

示例

template<class T, class = typename std::enable_if<cond, T>::type> // (A)
struct A;

template<class T, class = std::enable_if_t<cond, T>>              // (B)
struct A;


相关名称

我们需要 typenamestd::enable_if 之前因为::type是一个 dependent-name,如果没有它,标准表示表达式应该被解析为 ::type实际上是一个

std::is_same<T, U>::value确实是一个,所以没有必要使用typename;这反过来意味着我们实际上只削减了 4 个字符……仅此而已。


延伸阅读



那么,为什么没有std::is_same变量模板

只是因为没有那么大的需求,所以没有人及时提出添加;因为大多数对以下替代方案感到满意:

std::is_same<T, U> {} == std::is_same<T, U>::value
std::is_same<T, U> () == std::is_same<T, U>::value

延伸阅读

有一个proposal ,由 Stephan T. Lavavej 编写,为合适的类型特征 添加变量模板。

关于C++14 对 is_same::value 使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941628/

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