gpt4 book ai didi

c++ - std::tuple_size 和引用

转载 作者:太空狗 更新时间:2023-10-29 23:05:01 26 4
gpt4 key购买 nike

我的问题很奇怪而且很短:为什么没有对 std::tuple_size 进行特化以供引用有充分的理由吗?

(现在是动机)

我有很多代码看起来像:

template<typename Tuple, typename Indices = 
std::make_index_sequence<
std::tuple_size<
typename std::remove_reference<Tuple>::type>::value
>
>
auto func(Tuple&& t, ...) -> decltype(...) {
return ...;
}

我希望使用 remove_reference 不是错误的做法,但由于它只适用于类型级别,所以我认为这里没有问题。另一种可能性是使用 std::move 传递元组,因为那时元组不是引用,但由于我只想转发元组,所以我也想传递左值引用,所以我使用了 std::remove_reference。

没那么糟糕,我只是好奇为什么 tuple_size 不适用于引用类型。有什么想法吗?

最佳答案

一般来说,类型特征作用于实际传递的类型,而不是任何潜在相关的类型。为 std::tuple_size> 提供基本操作似乎是一致的,可用于创建更方便的版本。换一种方式,即拥有方便的版本并从中构建限制性更强的版本,似乎更有问题。

只需使用一个助手:

template <typename T>
struct my_tuple_size
: std_integral_constant<std::size_t,
std::tuple_size<
typename std::remove_reference<T>::type>
::value> {
};

(我希望我在手机上输入正确)

关于c++ - std::tuple_size 和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827806/

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