簡體   English   中英

std :: tuple_size和引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM