From 7544cbd5a0302f9d53c60bf536e595288c7bafc4 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 17 Dec 2024 18:02:01 +0100 Subject: [PATCH] ENH: Make default-constructors of RGBPixel and RGBAPixel `constexpr` Tested by means of `CheckConstexprBeginAndEndOfContainer()`. Note that these default-constructors were already `constexpr` _implicitly_, as implied by `= default`, when `ITK_FUTURE_LEGACY_REMOVE` would be enabled. --- Modules/Core/Common/include/itkRGBAPixel.h | 4 +++- Modules/Core/Common/include/itkRGBPixel.h | 4 +++- Modules/Core/Common/test/itkRGBAPixelGTest.cxx | 5 +++++ Modules/Core/Common/test/itkRGBPixelGTest.cxx | 5 +++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Modules/Core/Common/include/itkRGBAPixel.h b/Modules/Core/Common/include/itkRGBAPixel.h index a5ceeb3bee0..ad34971a101 100644 --- a/Modules/Core/Common/include/itkRGBAPixel.h +++ b/Modules/Core/Common/include/itkRGBAPixel.h @@ -81,7 +81,9 @@ class ITK_TEMPLATE_EXPORT RGBAPixel : public FixedArray #ifdef ITK_FUTURE_LEGACY_REMOVE RGBAPixel() = default; #else - RGBAPixel() { this->Fill(0); } + constexpr RGBAPixel() + : Superclass{} + {} #endif /** Pass-through constructor for the Array base class. */ diff --git a/Modules/Core/Common/include/itkRGBPixel.h b/Modules/Core/Common/include/itkRGBPixel.h index f9a879536f9..a43f42951cc 100644 --- a/Modules/Core/Common/include/itkRGBPixel.h +++ b/Modules/Core/Common/include/itkRGBPixel.h @@ -80,7 +80,9 @@ class ITK_TEMPLATE_EXPORT RGBPixel : public FixedArray #ifdef ITK_FUTURE_LEGACY_REMOVE RGBPixel() = default; #else - RGBPixel() { this->Fill(0); } + constexpr RGBPixel() + : Superclass{} + {} #endif #if defined(ITK_LEGACY_REMOVE) diff --git a/Modules/Core/Common/test/itkRGBAPixelGTest.cxx b/Modules/Core/Common/test/itkRGBAPixelGTest.cxx index d5760b0ffe9..16b0c285467 100644 --- a/Modules/Core/Common/test/itkRGBAPixelGTest.cxx +++ b/Modules/Core/Common/test/itkRGBAPixelGTest.cxx @@ -22,6 +22,11 @@ #include +static_assert(itk::RangeGTestUtilities::CheckConstexprBeginAndEndOfContainer>() && + itk::RangeGTestUtilities::CheckConstexprBeginAndEndOfContainer>() && + itk::RangeGTestUtilities::CheckConstexprBeginAndEndOfContainer>()); + + // Tests that a RGBAPixel that is "value-initialized" (by empty braces, `{}`) is zero-filled. TEST(RGBAPixel, ValueInitializedIsZeroFilled) { diff --git a/Modules/Core/Common/test/itkRGBPixelGTest.cxx b/Modules/Core/Common/test/itkRGBPixelGTest.cxx index 64a8edb4e0d..4e65888c490 100644 --- a/Modules/Core/Common/test/itkRGBPixelGTest.cxx +++ b/Modules/Core/Common/test/itkRGBPixelGTest.cxx @@ -22,6 +22,11 @@ #include +static_assert(itk::RangeGTestUtilities::CheckConstexprBeginAndEndOfContainer>() && + itk::RangeGTestUtilities::CheckConstexprBeginAndEndOfContainer>() && + itk::RangeGTestUtilities::CheckConstexprBeginAndEndOfContainer>()); + + // Tests that a RGBPixel that is "value-initialized" (by empty braces, `{}`) is zero-filled. TEST(RGBPixel, ValueInitializedIsZeroFilled) {