Можете ли вы заменить & с bitand в ссылках?

В C++ мы можем написать and за &&, or за ||, bitand за & а также bitor за |,

Теперь интересно and а также bitand действительны только в тех случаях, когда имеются в виду эти операторы, или если ссылки определены (g++ 4.6.3 принимает bitand для ссылок - ссылки на rvalue не поддерживаются в этой версии - но, конечно, это может быть просто компилятор, не улавливающий ошибку).

Вкратце: допустим ли следующий код C++?

int and x = 3;

int a;
int bitand y = a;

Конечно, я бы никогда не написал такой код (за исключением, может быть, участия в конкурсе запутанного кода), но действительно ли он действителен?

1 ответ

Решение

Согласно C++11, 2.6/4:

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

Так int and a = 5; совершенно верно, хотя и совершенно безумно.


Больше примеров:

struct ete
{
    compl ete();
    int egr()and;
};
Другие вопросы по тегам