diff --git a/stl/inc/mutex b/stl/inc/mutex index ce4c809f6a1..415aa79286e 100644 --- a/stl/inc/mutex +++ b/stl/inc/mutex @@ -32,18 +32,18 @@ _EXPORT_STD class condition_variable_any; class _Mutex_base { // base class for all mutex types public: -#ifdef _ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR +#ifdef _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR + _Mutex_base(int _Flags = 0) noexcept { + _Mtx_init_in_situ(_Mymtx(), _Flags | _Mtx_try); + } +#else // ^^^ defined(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) / !defined(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) vvv constexpr _Mutex_base(int _Flags = 0) noexcept { _Mtx_storage._Critical_section = {}; _Mtx_storage._Thread_id = -1; _Mtx_storage._Type = _Flags | _Mtx_try; _Mtx_storage._Count = 0; } -#else // ^^^ _ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR / !_ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR vvv - _Mutex_base(int _Flags = 0) noexcept { - _Mtx_init_in_situ(_Mymtx(), _Flags | _Mtx_try); - } -#endif // ^^^ !_ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR ^^^ +#endif // ^^^ !defined(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) ^^^ ~_Mutex_base() noexcept { _Mtx_destroy_in_situ(_Mymtx()); diff --git a/tests/std/tests/VSO_0226079_mutex/env.lst b/tests/std/tests/VSO_0226079_mutex/env.lst index de7171f19ca..d2b91697b4b 100644 --- a/tests/std/tests/VSO_0226079_mutex/env.lst +++ b/tests/std/tests/VSO_0226079_mutex/env.lst @@ -3,5 +3,5 @@ RUNALL_INCLUDE ..\impure_matrix.lst RUNALL_CROSSLIST -* PM_CL="/D_ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR" +* PM_CL="/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR" * PM_CL="" diff --git a/tests/std/tests/VSO_0226079_mutex/test.cpp b/tests/std/tests/VSO_0226079_mutex/test.cpp index dd84dd39d93..584b3e982ea 100644 --- a/tests/std/tests/VSO_0226079_mutex/test.cpp +++ b/tests/std/tests/VSO_0226079_mutex/test.cpp @@ -468,7 +468,7 @@ void test_vso_1253916() { do_shared_locked_things(shared_lock{mtx}); } -#ifdef _ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR +#ifndef _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR struct test_constexpr_ctor { constexpr test_constexpr_ctor() {} mutex mtx; @@ -478,7 +478,7 @@ test_constexpr_ctor obj; #if _HAS_CXX20 && !defined(_M_CEE) constinit test_constexpr_ctor obj2; #endif // _HAS_CXX20 && !defined(_M_CEE) -#endif // _ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR +#endif // !defined(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) int main() { {