diff options
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/fntype1.C | 26 |
2 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dc5afe3..7339c62 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-05-19 Jason Merrill <jason@redhat.com> + + PR c++/44193 + * g++.dg/template/fntype1.C: New. + 2010-05-19 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/discr23.ad[sb]: New test. diff --git a/gcc/testsuite/g++.dg/template/fntype1.C b/gcc/testsuite/g++.dg/template/fntype1.C new file mode 100644 index 0000000..d7be273a --- /dev/null +++ b/gcc/testsuite/g++.dg/template/fntype1.C @@ -0,0 +1,26 @@ +bool f(int i) { return i != 5; } + +template <class X, class P = bool(X)> +struct Traits +{ + typedef P type; +}; + +template <class X, class P = typename Traits<X>::type> +struct S +{ + const P& p_; + S( const P& p ) : p_(p) {} // const reference +}; + +template <class X> +S<X> make_s(const typename Traits<X>::type & p) // const reference +{ + return S<X>(p); // << HERE +} + + +int main() +{ + make_s<int>(f); +} |