[libcxx-commits] [libcxx] [libc++] P3391R2: `constexpr` integral overloads of `to_(w)string` (PR #205025)

A. Jiang via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jun 30 03:42:17 PDT 2026


================
@@ -3774,12 +3777,15 @@ stoull(const string& __str, size_t* __idx = nullptr, int __base = 10);
 [[__nodiscard__]] _LIBCPP_EXPORTED_FROM_ABI double stod(const string& __str, size_t* __idx = nullptr);
 [[__nodiscard__]] _LIBCPP_EXPORTED_FROM_ABI long double stold(const string& __str, size_t* __idx = nullptr);
 
+#  if _LIBCPP_STD_VER < 26 || defined(_LIBCPP_BUILDING_LIBRARY)
----------------
frederick-vs-ja wrote:

For GCC, the crux is that if one version is marked `gnu_inline`, other versions must be so.

If we want to make the header provide forward declarations and `gnu_inline` definitions, then GCC requires the forward declarations to be `gnu_inline` (or the definitions to be non-`gnu_inline`). On the other hand, we need the source file to provide non-`gnu_inline` definitions, and the forward declarations visible to GCC must be non-`gnu_inline` either.

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


More information about the libcxx-commits mailing list