在C ++中,我们可以为and
撰写&&
,为or
撰写||
,为bitand
撰写&
和bitor
|
。
现在我想知道and
和bitand
是否只适用于那些运算符的位置,或者定义引用的位置(g ++ 4.6.3接受bitand
作为引用 - rvalue引用似乎不支持该版本 - 但当然可能只是编译器没有捕获错误。)
简而言之:以下代码是否有效?
int and x = 3;
int a;
int bitand y = a;
当然我永远不会写这样的代码(除非参与混淆的代码竞赛),但它实际上是否有效?
答案 0 :(得分:11)
根据C ++ 11,2.6 / 4:
在语言的所有方面,每个替代令牌的行为分别与其主要令牌相同
所以int and a = 5;
完全有效,但也非常疯狂。
更多例子:
struct ete
{
compl ete();
int egr()and;
};