C ++ Официальные имена операторов / ключевые слова - PullRequest
33 голосов
/ 30 декабря 2011

С праздником ребята.

Я работал над последовательностью препроцессора C ++ (используя boost), чтобы помочь мне в генерации функторов на основе операторов. Я до сих пор завершил источник, однако у меня были проблемы с поиском наиболее подходящих ключевых слов, идентифицирующих эти функторы.

В частности, после просмотра черновика C ++ 0x мне не удалось найти наиболее подходящие (уникальные) имена для следующих операторов:

  • -> и. которые оба называются в проекте: операторы класса
  • -> * и. *, Которые оба называются: указатель на операторы-члены

Как вы думаете, вы можете помочь мне назвать их лучше?

Ссылки, которые я использовал для:

  1. Черновик C ++ 0x (можно найти онлайн)
  2. Заголовок "boost / proto / operator.hpp" , который включает большинство перегружаемых операторов.
  3. Операторы в C и C ++ из Википедии, которые также предоставили следующие имена
    • . ссылка на структуру
    • -> разыменование структуры
    • -> * и. * Указатели на элементы

Вот список, который я до сих пор создал. Будем весьма благодарны за любые другие предложения.

 Symbol        Keyword           Description
++      , post_increment      , post increment
--      , post_decrement      , post decrement
++      , pre_increment       , pre increment
--      , pre_decrement       , pre decrement
+       , unary_plus          , additive promotion
-       , unary_minus         , additive inversion
!       , negate              , logical negation
~       , complement          , complement
*       , indirect            , indirection
&       , address_of          , address of
+       , add                 , addition
-       , subtract            , subtraction
*       , multiplies          , multiplication
/       , divides             , division
%       , modulus             , modulo
==      , equal               , equality
!=      , inequal             , inequality
>       , greater             , greater than
<       , less                , less than
>=      , greater_equal       , greater or equal than
<=      , less_equal          , less or equal than
&&      , logical_and         , logical and
||      , logical_or          , logical or
&       , bitwise_and         , bitwise and
|       , bitwise_or          , bitwise inclusive or
^       , bitwise_xor         , bitwise exclusive or
<<      , left_shift          , left shift
>>      , right_shift         , right shift
+=      , add_assign          , addition assignment
-=      , subtract_assign     , subtractions assignment
*=      , multiplies_assign   , multiplication assignment
/=      , divides_assign      , division assignment
%=      , modulus_assign      , modulo assignment
>>=     , right_shift_assign  , right shift assignment
<<=     , left_shift_assign   , left shift assignment
&=      , bitwise_and_assign  , bitwise and assignment
^=      , bitwise_or_assign   , bitwise exclusive or assignment
|=      , bitwise_or_assign   , bitwise inclusive or assignment
->*     , arrow_indirect      , pointer to member
,       , comma               , comma
=       , assign              , assignment
[]      , subscript           , subscription
->      , arrow               , class member
.       , dot                 , class member
.*      , dot_indirect        , pointer to member

1 Ответ

10 голосов
/ 30 декабря 2011

Попробуйте http://en.cppreference.com/w/cpp/language/operator_precedence.

Новое, удаление, приведение, я думаю, что там есть еще несколько операторов и ключевых слов.

...