我正在阅读提升文档,并在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 */
我认为作者故意写了->.
,因为->
和.
也包括在内,但->.
是什么,或者为什么会在这里?
答案 0 :(得分:7)
这似乎是一个错字。
在C ++草案3690中,没有提及运算符->.
。
可能是->*
:
5.5指针成员运算符[expr.mptr.oper]
指向成员的操作符
->*
和.*
从左到右分组。
在http://www.boost.org/doc/libs/1_54_0/doc/html/lambda/le_in_details.html中,他们有一些关于此运算符的示例。
答案 1 :(得分:3)
从C ++ 11,2.13:“运算符和标点符号”中可以看到,没有“->.
”这样的运算符。
答案 2 :(得分:0)
没有像“&gt;”这样的运营商。 http://msdn.microsoft.com/en-us/library/x04xhy0h.aspx