2
我想測試一個變量類型的特性。我確實可以,但代碼太冗長了。通過類型變量輸入特徵
考慮一個例子,其中我定義相同類型的值的在容器中的類型的變量:
#include <vector>
int main() {
std::vector<int> v, &rv=v;
// ‘rv’ is not a class, namespace, or enumeration
//rv::value_type i1;
// Ok
decltype(v)::value_type i2;
// decltype evaluates to ‘std::vector<int>&’, which is not a class or enumeration type
//decltype(rv)::value_type i3;
// Ok
std::remove_reference<decltype(rv)>::type::value_type i4;
}
我可以decltype
住,但添加std::remove_reference
是太多了。有沒有什麼好的方法來縮短代碼,而無需定義輔助模板?
你想測試什麼屬性? (這看起來很像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。) – molbdnilo
Dunno,'remove_reference'行看起來不像對我不好,尤指考慮到你不會這麼做幾十次。話雖如此,答案可能是「不」。 –
如果你反覆使用它,也許使用'using'語句並將它別名到'value_type'或其他東西 – jaggedSpire