diff options
author | Marek Polacek <polacek@redhat.com> | 2022-05-13 19:45:03 -0400 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2022-05-13 19:45:49 -0400 |
commit | 62ecd2b8d46aaf96caef5fa78953216629e49ebd (patch) | |
tree | dd6dd740b581928c3ee8858b3a04fa8447e153de | |
parent | dd7813f05df50d2ad8e0dc34503f2dff0b521d89 (diff) | |
download | gcc-62ecd2b8d46aaf96caef5fa78953216629e49ebd.zip gcc-62ecd2b8d46aaf96caef5fa78953216629e49ebd.tar.gz gcc-62ecd2b8d46aaf96caef5fa78953216629e49ebd.tar.bz2 |
c++: Add fixed test [PR81952]
This was fixed by r258755:
PR c++/81311 - wrong C++17 overload resolution.
PR c++/81952
gcc/testsuite/ChangeLog:
* g++.dg/overload/conv-op4.C: New test.
-rw-r--r-- | gcc/testsuite/g++.dg/overload/conv-op4.C | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/overload/conv-op4.C b/gcc/testsuite/g++.dg/overload/conv-op4.C new file mode 100644 index 0000000..80de195 --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/conv-op4.C @@ -0,0 +1,22 @@ +// PR c++/81952 +// { dg-do run { target c++11 } } + +template <class T> +struct opt { + opt() { } + opt(opt const& ) { __builtin_abort (); } + opt(opt&& ) { __builtin_abort (); } + + template <class U> + opt(U&& ) { } +}; + +struct foo +{ + explicit operator opt<int>() { __builtin_abort (); return {}; } +}; + +int main() +{ + opt<int> o(foo{}); +} |