【问题标题】:Calling function with parenthesis around its name using C++使用 C++ 在其名称周围使用括号调用函数
【发布时间】:2013-11-17 15:40:13
【问题描述】:

我发现 boost 中的代码类似于:

class A
{
    stats stat;
public:
    int min() const{ return (stat.min)(); }
};

...

int stats::min()
{
...
}

为什么这里有括号?我知道它可以用于“最烦人的解析”并禁止 ADL。但也许还有别的?提前致谢!

【问题讨论】:

  • 您的意思是return (stat.min)(); 语句中的(stat.min)?绝对不需要它们,除非原始编码器不信任运算符优先级来做正确的事情(确实如此)。
  • 它什么也没做。他们可能习惯于将函数名称包装在括号中以避免 ADL,他们最终也在这里使用了它们。

标签: c++


【解决方案1】:

之所以这样做,是因为 windows.h(Windows 平台)对最小值和最大值都有 #defines。请参阅此处了解更多信息:How to tame the Windows headers (useful defines)?https://stackoverflow.com/a/13420838/297451

【讨论】:

  • 你好!太感谢了!我不知道我是否可以投票,但我想给你设置最大球!
猜你喜欢
  • 2014-05-31
  • 2010-09-20
  • 2016-08-13
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 2011-09-29
  • 2022-12-19
相关资源
最近更新 更多