[clang] [clang] Implement CWG2815 (PR #132778)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 9 10:54:48 PDT 2025
================
@@ -47,6 +47,28 @@ void f() {
#endif
} // namespace cwg2813
+namespace cwg2815 { // cwg2815: 21
+#if __cplusplus >= 201703L
+int arg() noexcept;
+
+int f(int (&)() noexcept);
+void f(int (&)());
+int i = f(arg);
+
+int g(int (*)() noexcept);
+void g(int (&)());
+int j = g(arg);
+
+int h(int (&)() noexcept);
+void h(int (*)());
+int k = h(arg);
+
+int a(int (*)()); // expected-note {{candidate function}}
+int a(int (&)()); // expected-note {{candidate function}}
+int x = a(arg); // expected-error {{call to 'a' is ambiguous}}
+#endif
----------------
offsetof wrote:
`f`, `g` and `h` would fail in standard versions without `noexcept` in the type system (pre-C++17).
https://github.com/llvm/llvm-project/pull/132778
More information about the cfe-commits
mailing list