【问题标题】:Why c++(g++) allows no spacing between template return type and function name?为什么 c++(g++) 允许模板返回类型和函数名之间没有空格?
【发布时间】: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();
}

【问题讨论】:

  • 为什么在&gt;f 之间要有一个空格?该空间有助于提高可读性,但不是必需的。这与在 a+b==c-7 这样的表达式中没有空格没有什么不同。
  • 这与返回指针的函数没有什么不同,它也不需要空格:int*foo() { ... }int main() 中需要一个空格,因为没有空格,词法分析器无法判断 int 标记的结束位置。

标签: c++ function templates g++


【解决方案1】:

标识符标记不能包含&lt;&gt;,因此空格是可选的。阅读tokenization

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 2015-09-28
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多