Можете ли вы заменить & с 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;
};