char数组的模板类型推导

时间:2019-01-10 20:26:12

标签: c++ templates string-literals decltype

template<typename T>
class X;

int main() {
    X<decltype("")> x;
}

为什么g ++将T推导为const char (&)[1]而不是简单地推论const char[1]

1 个答案:

答案 0 :(得分:7)

与其他所有作为右值的文字不同,字符串文字是左值。 decltype应用于左值表达式为您提供了一个引用,因此const char (&)[1]是正确的行为。