diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2015-03-25 17:14:40 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2015-03-25 17:14:40 +0000 |
commit | b7f5cbad2eee68fb861f44f7cdbd93ae1c7c8121 (patch) | |
tree | 16b66e69b635583fd41b2cc953256381f974a0c8 /gcc | |
parent | 871fe673a2a300c1c5392409740590eed79b9b09 (diff) | |
download | gcc-b7f5cbad2eee68fb861f44f7cdbd93ae1c7c8121.zip gcc-b7f5cbad2eee68fb861f44f7cdbd93ae1c7c8121.tar.gz gcc-b7f5cbad2eee68fb861f44f7cdbd93ae1c7c8121.tar.bz2 |
re PR c++/54987 (missed ambiguity in template function call)
2015-03-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54987
* g++.dg/template/pr54987.C: New.
From-SVN: r221668
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/pr54987.C | 51 |
2 files changed, 56 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b6dfe3b..7dedff4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-03-25 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/54987 + * g++.dg/template/pr54987.C: New. + 2015-03-25 Richard Biener <rguenther@suse.de> PR tree-optimization/62630 diff --git a/gcc/testsuite/g++.dg/template/pr54987.C b/gcc/testsuite/g++.dg/template/pr54987.C new file mode 100644 index 0000000..773f023 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr54987.C @@ -0,0 +1,51 @@ +// PR c++/54987 + +struct Argument1 +{ +}; + +struct Argument2 +{ +}; + +template<typename T> +struct Template1 +{ + Template1() {} + + template<typename Y> + Template1( const Template1<Y>& ) {} +}; + +template<typename T> +struct Template2 +{ + Template2() {} + + template<typename Y> + Template2( const Template1<Y>& ) {} +}; + +template <typename T> +struct make_type +{ + typedef Argument1 type; +}; + +template<typename T> +void foo( T, Template1<typename make_type<T>::type> ) +{ +} + +template<typename T> +void foo( T, Template2<typename make_type<T>::type> ) +{ +} + +int main() +{ + Template1<Argument2> t; + Argument1 a; + foo( a, t ); // { dg-error "ambiguous" } + return 0; +} |