2013-09-20 1 views
7

Я читаю документацию и повысить см следующую http://www.boost.org/doc/libs/1_54_0/doc/html/lambda/le_in_details.html:Что такое оператор C++ ->. (оператор стрелочной точки), найденный в документации по ускорению?

Операторы, которые не могут быть перегружены

Некоторые операторы не могут быть перегружены на всех (::, *..). Для некоторых операторов требования к типам возвратов не позволяют перегружать для создания лямбда-функторов. Эти операторы ->., ->, новый, новый [], удалить, удалить [] и?: (Условный оператор).

Так что же такое оператор ->.? Я попробовал 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 */ 

Я считаю, что автор намеренно написал ->. с -> и . также включен, но что такое ->., или почему он здесь?

+2

Скорее всего опечатка. Вероятно, это означает «-> *» – user1233963

+1

Может быть '-> *' http://www.parashift.com/c++-faq/dotstar-vs-arrowstar.html –

ответ

7

Это похоже на опечатку.

В проекте C++ проекта 3690 нет упоминания об операторе ->..

Это может быть ->*:

5,5 Указатель на член операторов [expr.mptr.oper]

Указатель на член операторов ->* и .* группа слева -направо.

И в http://www.boost.org/doc/libs/1_54_0/doc/html/lambda/le_in_details.html у них есть пример с этим оператором.

+0

Ну ... '. *' Также здесь, но я не думал об этом ... Мой ум был заполнен чем-то, что вызывает пользовательский 'operator ->' и получает член от результата без указателя – jingyu9575

3

Как вы можете видеть из C++ 11, 2.13: «Операторы и пунктуаторы», такого оператора, как «->.», нет.

Смежные вопросы