From 2c2ce9a39f1bbe1d37948e97c8e4173a0c076442 Mon Sep 17 00:00:00 2001 From: Bram Meijer <48760013+Brambovich@users.noreply.github.com> Date: Sat, 28 Mar 2026 10:16:00 +0100 Subject: [PATCH] Add a inplace_function constructor from a nullptr (#1336) * Add a inplace_function constructor with a nullptr argument * Add unit test for nullptr construction --------- Co-authored-by: John Wellbelove --- include/etl/inplace_function.h | 10 ++++++++++ test/test_inplace_function.cpp | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/etl/inplace_function.h b/include/etl/inplace_function.h index a027f342..1dde4a30 100644 --- a/include/etl/inplace_function.h +++ b/include/etl/inplace_function.h @@ -572,6 +572,16 @@ namespace etl set(f); } + //************************************************************************* + /// Construct from a nullptr. + /// Clears the inplace_function. + /// \param nullptr_t Null pointer + //************************************************************************* + inplace_function(etl::nullptr_t) noexcept + { + clear(); + } + //************************************************************************* /// Construct from object + non-const member function (runtime). /// \tparam TObject The object type. diff --git a/test/test_inplace_function.cpp b/test/test_inplace_function.cpp index 27fd5407..6d86157c 100644 --- a/test/test_inplace_function.cpp +++ b/test/test_inplace_function.cpp @@ -509,6 +509,16 @@ namespace CHECK(function_called == FunctionCalled::Free_Void_Called); } + //************************************************************************* + TEST_FIXTURE(SetupFixture, test_construct_from_nullptr) + { + etl::inplace_function ipf(nullptr); + + CHECK_FALSE(ipf.is_valid()); + CHECK_FALSE(ipf); + CHECK_THROW(ipf(), etl::inplace_function_uninitialized); + } + #if ETL_USING_CPP17 //************************************************************************* TEST_FIXTURE(SetupFixture, test_make_free_void_compile_time)