gpt4 book ai didi

c++ - 别名 const 重载函数的返回类型

转载 作者:太空狗 更新时间:2023-10-29 21:18:06 32 4
gpt4 key购买 nike

我有以下重载函数:

template<size_t N, typename T>
auto get(const T & _t) -> decltype(std::get<...>(_t)) {
...
}

template<size_t N, typename T>
auto get(T & _t) -> decltype(std::get<...>(_t)) {
...
}

第一个问题是:

第一个是否使用std::get(const tuple<_Elements...>& __t) 第二个std::get(tuple<_Elements...>& __t) ??

现在我想为我的新函数的返回类型起别名 get :

using type = typename decltype(aux::get<I>(data))::type;

这里用的是哪一个? const 与否?我该如何选择?我想为两者起别名! data是非常量

最佳答案

是的,第一个使用const 重载,第二个使用非const 重载。这是因为 _t 在第一种情况下是 const 而在第二种情况下是非 const

在类型别名中使用哪一个取决于数据的类型。是 const 吗?如果是这样,const 重载就是别名。如果不是,则非 const 是。

要获得任何类型的“虚拟值”,您可以使用std::declval。此代码将别名为 const 版本:

using type = typename decltype(aux::get<I>(std::declval<const YourTypeHere>()))::type;

关于c++ - 别名 const 重载函数的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30893424/

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