gpt4 book ai didi

c++ - 为什么 std::get 没有接受转发引用的单一签名

转载 作者:太空狗 更新时间:2023-10-29 20:21:34 25 4
gpt4 key购买 nike

为什么 std::tuplestd::get 有这么多重载 ( http://en.cppreference.com/w/cpp/utility/tuple/get )?一个对应于 const &&& 的所有可能组合?对于每种组合,返回值上的 const ref 限定符是相同的。为什么不只有一个通过转发引用接受元组类型的重载,然后简单地转发基于输入签名的返回值呢?像这样

template <int Index, typename TupleType>
decltype(auto) get(TupleType&& tup);

这种事情会让人们很容易地推断出 get 函数的作用,并避免像 Issue 2485 ( https://wg21.cmeerw.net/lwg/issue2485 ) 这样的错误

最佳答案

std::get 存在于 decltype(auto) 之前。所以这很容易。

好的,为什么不改变它呢?

std::get 的主体不是标准指定的,不应该是因为不同的编译器有不同的元组布局和实现。

decltype(auto) 没有告诉标准的读者、编译器的用户或实现者返回类型是什么。它只是说它是从 body 中推导出来的。标准没有规定。

这样的标准是没有用的,除非他们单独描述返回值是什么,最终看起来很像列表重载。

关于c++ - 为什么 std::get 没有接受转发引用的单一签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196994/

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