【发布时间】:2013-09-20 08:15:05
【问题描述】:
我正在阅读 boost 文档并在 http://www.boost.org/doc/libs/1_54_0/doc/html/lambda/le_in_details.html 看到以下内容:
不能重载的运算符
有些运算符根本不能重载(::, ., .*)。对于一些 运算符,对返回类型的要求阻止它们 重载以创建 lambda 仿函数。 这些运算符是 ->.、->、 new、new[]、delete、delete[] 和 ?:(条件运算符)。
那么->. 运算符是什么?我尝试了 Google 和 http://www.symbolhound.com/,但没有得到任何有用的信息,在 N3337 上搜索会得到 1 个结果,即句尾为 ->,而 Visual Studio 2012 将无法编译:
class xT {
bool operator ->. () {} /* fail */
};
std::string* p;
p->.size(); /* fail */
std::auto_ptr<std::string> a;
a->.size(); /* fail */
我相信作者故意写了->.,因为->和.也包括在内,但是->.是什么,或者为什么会出现在这里?
【问题讨论】:
-
很可能是错字。大概意思是“->*”
标签: c++ boost operator-keyword