2013-06-08 2 views
9

В C++, мы можем написать and для &&, or для ||, bitand для & и bitor для |.Можете ли вы заменить & бит и в ссылках?

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

В целом: Является ли следующий код действительным C++?

int and x = 3; 

int a; 
int bitand y = a; 

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

+3

Вы можете скомпилировать его и выяснить, нет? – STLDeveloper

+0

'and',' bitand' и т. Д. - это просто макросы. Вы можете использовать их везде, где хотите, так что да, вы можете это сделать. – Dave

+0

(p.s. "кроме, может быть, если участвует в конкурсе с запутанным кодом": это уже сделано: P) – Dave

ответ

11

В соответствии с С ++ 11, 2,6/4:

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

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


Другие примеры:

struct ete 
{ 
    compl ete(); 
    int egr()and; 
}; 
Смежные вопросы