我想测试一个变量类型的属性。我可以,但是代码太冗长了。
考虑一个示例,其中我定义了一个与容器中值的类型相同类型的变量:
#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
太多了。有没有什么好的方法可以缩短代码,而无需定义辅助模板? 最佳答案
您可以使用以下方法之一缩短它
std::decay_t<decltype(rv)>::value_type i4 = 42;
或者
std::decay_t<decltype(*std::begin(rv))> i4 = 42;
关于c++ - 通过类型的变量键入特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39458660/