// PR c++/14586 enum E { e }; E & operator |= (E &f1, const E &f2); E operator | (const E &f1, const E &f2) { E result = f1; result |= f2; return result; } template void foo () { const E flags = e | e; } template void foo ();