diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/ext/visibility/anon10.C')
-rw-r--r-- | gcc/testsuite/g++.dg/ext/visibility/anon10.C | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ext/visibility/anon10.C b/gcc/testsuite/g++.dg/ext/visibility/anon10.C new file mode 100644 index 000000000..8c79631b0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/visibility/anon10.C @@ -0,0 +1,44 @@ +// http://bugzilla.redhat.com/411871 +// { dg-do compile } + +extern "C" int printf (const char *, ...); + +struct E +{ + template <typename T> E (const volatile T&); + template <typename T> E (T&); + char x[64]; +}; + +template<typename T> struct D +{ + static E foo (E, ...); + static int foo (T, int); +}; + +template<typename T, typename U> struct C +{ + static T ca; + static const int value = sizeof (D<U>::foo (ca, 0)) == sizeof (int); +}; + +struct A +{ + int a; +}; + +namespace +{ + struct B + { + int a; + }; +} + +int bar (void) +{ + C<A, int> a; + C<B, int> b; + + return a.value + b.value; +} |