char数组的模板类型推导
Template type deduction for char array
template<typename T>
class X;
int main() {
X<decltype("")> x;
}
为什么 g++ 将 T
推导为 const char (&)[1]
而不是简单地 const char[1]
?
与作为右值的所有其他文字不同,字符串文字是左值。 decltype
应用于左值表达式可为您提供参考,因此 const char (&)[1]
是正确的行为。
template<typename T>
class X;
int main() {
X<decltype("")> x;
}
为什么 g++ 将 T
推导为 const char (&)[1]
而不是简单地 const char[1]
?
与作为右值的所有其他文字不同,字符串文字是左值。 decltype
应用于左值表达式可为您提供参考,因此 const char (&)[1]
是正确的行为。