2012-12-20 37 views
0

decltype的结果是否与模板标识符相同? (当谈到T及其价值时,什么是正确的术语?)。那是否存在断言失败的情况?是模板参数的decltype结果

template<typename T> 
void foo(T x) 
{ 
    static_assert(std::is_same<decltype(x), T>::value, "decltype check failed"); 
} 
+1

“什么是正确的术语?” 'T'是*模板参数*,其值是*模板参数*。 –

回答

1

变量类型x是T,因此该static_assert总是要通过。

+0

这可能会改变一些修改,例如'decltype((X))'? –

+1

@MichaWiedenmann,确定:http://ideone.com/t06kJC –

+0

对不起,我可以也应该自己检查一下。我问的原因是因为我认为很难理解decltype和模板参数扣除的更细节。 –

相关问题