PR c++/78908 - template ops and bitfields
[gcc.git] / gcc / testsuite / g++.dg / template / bitfield3.C
1 // PR c++/78908
2
3 struct A { int a : 1; };
4 struct F { int foo (A const &); };
5 template <typename> struct O : F { int foo (A const &); };
6 struct S {} b;
7 template <typename L, typename T> int operator<< (L, T) { return (T) 123; }
8 template <typename T> int O<T>::foo (A const &x) { return b << x.a; }
9
10 int
11 main ()
12 {
13 A a = { 0 };
14 O<int> o;
15 if (o.foo (a) != 123)
16 __builtin_abort ();
17 signed char d = 2;
18 if ((b << d) != 123)
19 __builtin_abort ();
20 }