[gcc r17-911] c++: add fixed test [PR106957]
Marek Polacek
mpolacek@gcc.gnu.org
Thu May 28 16:19:56 GMT 2026
https://gcc.gnu.org/g:3e1f749e2dbd3d397778af9c8f2ecb060ef1d934
commit r17-911-g3e1f749e2dbd3d397778af9c8f2ecb060ef1d934
Author: Marek Polacek <polacek@redhat.com>
Date: Thu May 28 12:18:29 2026 -0400
c++: add fixed test [PR106957]
Fixed by r16-8015:
c++: error routines re-entered with uneval lambda [PR124397]
PR c++/106957
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/lambda-uneval32.C: New test.
Diff:
---
gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C
new file mode 100644
index 000000000000..63980896eb12
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval32.C
@@ -0,0 +1,25 @@
+// PR c++/106957
+// { dg-do compile { target c++20 } }
+
+template<bool B>
+struct bool_constant {
+ static constexpr bool value = B;
+ constexpr operator bool() const { return value; }
+};
+
+using true_type = bool_constant<true>;
+using false_type = bool_constant<false>;
+
+constexpr auto f = [](int){}; // { dg-error "invalid conversion" }
+
+template<typename T>
+auto canCallFOn(T) -> decltype([]{ f(T{}); }(), true_type{}); // { dg-error "no match|invalid conversion" }
+
+constexpr false_type canCallFOn(...) {
+ return {};
+}
+
+int main() {
+ static_assert(!canCallFOn(1)); // { dg-error "" }
+ static_assert(!canCallFOn("")); // { dg-error "" }
+}
More information about the Gcc-cvs
mailing list