考虑代码:
template <class T>
class Bar {
int foobar;
using X = T();
friend X foo;
};
void foo() {
Bar<void> bar;
bar.foobar = 1;
static_cast<void>(bar);
}
int main() {}
template <class T>
class Bar {
int foobar;
friend T foo;
};
void foo() {
Bar<void()> bar;
bar.foobar = 1;
static_cast<void>(bar);
}
int main() {}
答案 0 :(得分:1)
因为grep "\..*\." *.txt
被解析为对象的声明,并且模板的实例化不能将对象的声明更改为函数的声明。
C ++标准/ [temp.spec]:
如果函数声明通过依赖类型(17.7.2.1)获取其函数类型而不使用 函数声明器的句法形式,程序格式不正确。