[libcxx-commits] [libcxx] [libc++] Make list constexpr as part of P3372R3 (PR #129799)

Peng Liu via libcxx-commits libcxx-commits at lists.llvm.org
Wed Jun 11 07:06:11 PDT 2025


================
@@ -239,12 +240,24 @@ void test_ctor_under_alloc_with_alloc() {
 #endif
 }
 
-int main(int, char**) {
+TEST_CONSTEXPR_CXX26 bool test() {
   basic_test();
   test_emplacable_concept();
   test_emplacable_concept_with_alloc();
-  test_ctor_under_alloc();
-  test_ctor_under_alloc_with_alloc();
+
+  if (!TEST_IS_CONSTANT_EVALUATED) {
+    test_ctor_under_alloc();
+    test_ctor_under_alloc_with_alloc();
----------------
winner245 wrote:

The main challenge I faced to make these tests constexpr is that they both call a function `getConstructController`, which defines a local static variable. 

```cpp
// getConstructController - Return the global allocator construction controller.
inline ConstructController* getConstructController() {
  static ConstructController c;
  return &c;
}
```

According to my test (https://godbolt.org/z/c51735h3T), this function call cannot be made constexpr. 

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


More information about the libcxx-commits mailing list