diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/template/deduce2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/template/deduce2.C | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/deduce2.C b/gcc/testsuite/g++.dg/template/deduce2.C new file mode 100644 index 000000000..bcf77b30b --- /dev/null +++ b/gcc/testsuite/g++.dg/template/deduce2.C @@ -0,0 +1,30 @@ +template <typename T0> struct tuple { + typedef tuple<int> tail; +}; + +template <> struct tuple<int> { +}; + +template <typename L> +struct length { + static const int i = length<typename tuple<L>::tail>::i; +}; + +template<> +struct length<tuple<int> > { + static const int i = 1; +}; + +template <int> struct M {}; + +template <typename A> +M<length<tuple<A> >::i > foo (A*); + +template <typename A> +M<length<tuple<A> >::i> foo (const A*); + +const int i1 = 3; + +void bar() { + foo (&i1); +} |