namespace N
{
enum E { A, B };
struct C
{
C(E) {}
private:
C(int) {}
};
E operator|(E, E) { return A; }
}
namespace Z
{
enum F {};
int operator|(F, int) = delete;
void Waldo()
{
N::C(N::A | N::B);
}
}
int main() {
}
bmFtZXNwYWNlIE4gCnsKICAgIGVudW0gRSB7IEEsIEIgfTsKCiAgICBzdHJ1Y3QgQyAKICAgIHsgICAKICAgICAgICBDKEUpIHt9CiAgICBwcml2YXRlOgogICAgICAgIEMoaW50KSB7fQogICAgfTsgIAogICAgRSBvcGVyYXRvcnwoRSwgRSkgeyByZXR1cm4gQTsgfQp9CgoKbmFtZXNwYWNlIFoKewogICAgZW51bSBGIHt9OwogICAgaW50IG9wZXJhdG9yfChGLCBpbnQpID0gZGVsZXRlOyAKCiAgICB2b2lkIFdhbGRvKCkKICAgIHsgICAKICAgICAgICBOOjpDKE46OkEgfCBOOjpCKTsgCiAgICB9ICAgCn0KCmludCBtYWluKCkgewoJCn0=