decltype
的结果是否与模板标识符相同? (当谈到T及其价值时,什么是正确的术语?)。那是否存在断言失败的情况?是模板参数的decltype结果
template<typename T>
void foo(T x)
{
static_assert(std::is_same<decltype(x), T>::value, "decltype check failed");
}
decltype
的结果是否与模板标识符相同? (当谈到T及其价值时,什么是正确的术语?)。那是否存在断言失败的情况?是模板参数的decltype结果
template<typename T>
void foo(T x)
{
static_assert(std::is_same<decltype(x), T>::value, "decltype check failed");
}
变量类型x
是T,因此该static_assert总是要通过。
这可能会改变一些修改,例如'decltype((X))'? –
@MichaWiedenmann,确定:http://ideone.com/t06kJC –
对不起,我可以也应该自己检查一下。我问的原因是因为我认为很难理解decltype和模板参数扣除的更细节。 –
“什么是正确的术语?” 'T'是*模板参数*,其值是*模板参数*。 –