[英]std::tuple_size and references
我的問題是好奇而且非常簡短:有沒有一個很好的理由為什么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傳遞元組,因為Tuple不是引用,但由於我只想轉發元組,我也想傳遞lvalue引用,所以我使用了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> {
};
(我希望我在手機上正確輸入)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.