1 // PR c++/51884 2 // { dg-do compile { target c++11 } } 3 // { dg-final { scan-assembler "_ZN1BIZN3fooIivE3barILb1EEEvvE1CEC1ERKS4_" } } 4 5 template<typename TT> 6 struct test { static const int value = 0; }; 7 template<int I> 8 struct enable_if { typedef void type; }; 9 fA10struct A { virtual void f() {} }; 11 template<typename U> struct B : A { B(); B(const B&); }; B()12template<typename U> B<U>::B() { } B(const B &)13template<typename U> B<U>::B(const B&) { } 14 g(T)15template<class T> void g(T) { } 16 17 template<typename T, typename = void> struct foo; 18 template<typename T> 19 struct foo<T,typename enable_if<test<T>::value>::type> 20 { 21 template <bool P> void bar() { 22 struct C { } c; 23 B<C> b; 24 g(b); 25 } 26 }; 27 28 int main() { 29 foo<int> f; 30 f.bar<true>(); 31 } 32