【发布时间】:2020-07-06 02:28:23
【问题描述】:
我想知道为什么 g++ 允许使用以下语法
有人知道为什么这很有效吗?
如果您看到下面的示例代码,Base<int> 和 foo() 之间没有空格
但是用g++还是可以的
template<typename T>
class Base {};
Base<int>foo()
{
cout << "Hello World" << endl;
}
int main()
{
foo();
}
【问题讨论】:
-
为什么在
>和f之间要有一个空格?该空间有助于提高可读性,但不是必需的。这与在a+b==c-7这样的表达式中没有空格没有什么不同。 -
这与返回指针的函数没有什么不同,它也不需要空格:
int*foo() { ... }。int main()中需要一个空格,因为没有空格,词法分析器无法判断int标记的结束位置。
标签: c++ function templates g++