[libcxx-commits] [libcxx] [libc++] Deprecate non-standard std::launch::any extension (PR #173397)

via libcxx-commits libcxx-commits at lists.llvm.org
Tue Dec 23 09:24:09 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: sohail (sohail103)

<details>
<summary>Changes</summary>

std::launch::any was a draft C++11 feature that was removed before the final standard. It has remained in libc++ as an extension. This patch marks it as deprecated to warn users who might be relying on it unintentionally.

Updated the future header and added a verify test to check for the deprecation warning.

Fixes #<!-- -->173219

---
Full diff: https://github.com/llvm/llvm-project/pull/173397.diff


2 Files Affected:

- (modified) libcxx/include/future (+1-1) 
- (added) libcxx/test/libcxx/thread/futures/launch_any_deprecated.verify.cpp (+21) 


``````````diff
diff --git a/libcxx/include/future b/libcxx/include/future
index c249bc5e7938f..999ddeec575ee 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -434,7 +434,7 @@ struct is_error_code_enum<future_errc::__lx> : public true_type {};
 #    endif
 
 // enum class launch
-_LIBCPP_DECLARE_STRONG_ENUM(launch){async = 1, deferred = 2, any = async | deferred};
+_LIBCPP_DECLARE_STRONG_ENUM(launch){async = 1, deferred = 2, any _LIBCPP_DEPRECATED = async | deferred};
 _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(launch)
 
 #    ifndef _LIBCPP_CXX03_LANG
diff --git a/libcxx/test/libcxx/thread/futures/launch_any_deprecated.verify.cpp b/libcxx/test/libcxx/thread/futures/launch_any_deprecated.verify.cpp
new file mode 100644
index 0000000000000..aa6ed5cccecb6
--- /dev/null
+++ b/libcxx/test/libcxx/thread/futures/launch_any_deprecated.verify.cpp
@@ -0,0 +1,21 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// <future>
+
+// enum class launch;
+
+// Verify that std::launch::any is deprecated.
+// It was a draft C++11 feature that was removed, but libc++ kept it as an extension.
+
+#include <future>
+
+void test() {
+  auto l = std::launch::any; // expected-warning {{'any' is deprecated}}
+  (void)l;
+}

``````````

</details>


https://github.com/llvm/llvm-project/pull/173397


More information about the libcxx-commits mailing list