diff options
author | Patrick Palka <ppalka@redhat.com> | 2022-02-08 09:47:34 -0500 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2022-02-08 09:47:34 -0500 |
commit | be862bf1f612c884597ace4cbfdec972a0bf0eef (patch) | |
tree | c9a0c6161e691b9213e0563d8cb70d1d6001e361 /gcc | |
parent | ab1355a4804f04700a6ad49c9cc90261334e9dc3 (diff) | |
download | gcc-be862bf1f612c884597ace4cbfdec972a0bf0eef.zip gcc-be862bf1f612c884597ace4cbfdec972a0bf0eef.tar.gz gcc-be862bf1f612c884597ace4cbfdec972a0bf0eef.tar.bz2 |
c++: Add testcase for already fixed PR [PR104425]
Fixed by r12-1829.
PR c++/104425
gcc/testsuite/ChangeLog:
* g++.dg/template/partial-specialization10.C: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.dg/template/partial-specialization10.C | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/partial-specialization10.C b/gcc/testsuite/g++.dg/template/partial-specialization10.C new file mode 100644 index 0000000..d03f313 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/partial-specialization10.C @@ -0,0 +1,25 @@ +// PR c++/104425 +// { dg-do compile { target c++11 } } + +namespace A { class foo {}; } +namespace B { class bar {}; } + +A::foo& operator<<(A::foo& f, const B::bar&); + +namespace C { + template<class T> T val(); + + A::foo& operator<<(A::foo& f, int in); + + template<class T, class = void> + struct has_insertion_operator { + static constexpr bool value = false; + }; + + template<class T> + struct has_insertion_operator<T, decltype(val<A::foo&>() << val<T>(), void())> { + static constexpr bool value = true; + }; +} + +static_assert(!C::has_insertion_operator<B::bar>::value, ""); |