1 // PR c++/14586
2 
3 enum E { e };
4 
5 E & operator |= (E &f1, const E &f2);
6 
7 E operator | (const E &f1, const E &f2) {
8   E result = f1;
9   result |= f2;
10   return result;
11 }
12 
foo()13 template <typename> void foo () {
14   const E flags = e | e;
15 }
16 
17 template void foo<double> ();
18