From 191d4fb0f040a79728ba35bebafde8579513bc2c Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Wed, 17 Sep 2025 21:16:57 +0200 Subject: [PATCH] Guards around usage of std::initializer_list in optional.h (#1186) * Guards around usage of std::initializer_list in optional.h In optional.h, ETL_HAS_INITIALIZER_LIST is being used to guard against cases where std::initializer_list is not available. But not consistently. This changes fixes it by adding it in the remaining places. * Fixed #undef in optional.h Instead of undefining ETL_OPTIONAL_ENABLE_CONSTEXPR_BOOL_RETURN_CPP14, ETL_OPTIONAL_ENABLE_CONSTEXPR_BOOL_RETURN_CPP20_STL was undefined twice (one of the misspelled). * Fix comment typos --- include/etl/gcd.h | 2 +- include/etl/lcm.h | 2 +- include/etl/optional.h | 6 +++++- include/etl/private/chrono/duration.h | 2 +- include/etl/ratio.h | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/etl/gcd.h b/include/etl/gcd.h index 8a954e0d..0926b2f0 100644 --- a/include/etl/gcd.h +++ b/include/etl/gcd.h @@ -21,7 +21,7 @@ copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR Value1 PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE diff --git a/include/etl/lcm.h b/include/etl/lcm.h index ef3008f6..3ffc9821 100644 --- a/include/etl/lcm.h +++ b/include/etl/lcm.h @@ -21,7 +21,7 @@ copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR Value1 PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE diff --git a/include/etl/optional.h b/include/etl/optional.h index e8e40439..12d90239 100644 --- a/include/etl/optional.h +++ b/include/etl/optional.h @@ -195,6 +195,7 @@ namespace etl storage.construct(etl::forward(args)...); } +#if ETL_HAS_INITIALIZER_LIST //******************************************* /// Construct from initializer_list and arguments. //******************************************* @@ -205,6 +206,7 @@ namespace etl { storage.construct(ilist, etl::forward(args)...); } +#endif #endif //*************************************************************************** @@ -816,6 +818,7 @@ namespace etl storage.construct(etl::forward(args)...); } +#if ETL_HAS_INITIALIZER_LIST //******************************************* /// Construct from initializer_list and arguments. //******************************************* @@ -826,6 +829,7 @@ namespace etl { storage.construct(ilist, etl::forward(args)...); } +#endif #endif //*************************************************************************** @@ -2313,7 +2317,7 @@ ETL_CONSTEXPR20_STL void swap(etl::optional& lhs, etl::optional& rhs) #undef ETL_OPTIONAL_ENABLE_CPP14 #undef ETL_OPTIONAL_ENABLE_CPP20_STL +#undef ETL_OPTIONAL_ENABLE_CONSTEXPR_BOOL_RETURN_CPP14 #undef ETL_OPTIONAL_ENABLE_CONSTEXPR_BOOL_RETURN_CPP20_STL -#undef ETL_OPTIONAL_ENABLE_COMSTEXPR_BOOL_RETURN_CPP20_STL #endif diff --git a/include/etl/private/chrono/duration.h b/include/etl/private/chrono/duration.h index a629c01c..cd81e9d9 100644 --- a/include/etl/private/chrono/duration.h +++ b/include/etl/private/chrono/duration.h @@ -21,7 +21,7 @@ copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR Value1 PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE diff --git a/include/etl/ratio.h b/include/etl/ratio.h index 2f2b5075..7e671589 100644 --- a/include/etl/ratio.h +++ b/include/etl/ratio.h @@ -21,7 +21,7 @@ copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR Value1 PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE