ITK  6.0.0
Insight Toolkit
itkMakeFilled.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkMakeFilled_h
19#define itkMakeFilled_h
20
21namespace itk
22{
27template <typename TContainer>
28constexpr TContainer
29MakeFilled(typename TContainer::const_reference value)
30{
31 // Note: The seemingly redundant {} initialization is required for C++14 and C++17, in order to declare MakeFilled
32 // constexpr. (C++20 does allow uninitialized variables in a constexpr function.)
33 TContainer container{};
36 static_assert(container.size() > 0, "MakeFilled requires TContainer with constant non-zero size!");
37
38 // Note that `std::fill` and `std::fill_n` are not `constexpr` until C++20.
39 for (auto & element : container)
40 {
41 element = value;
42 }
43 return container;
44}
45} // namespace itk
46
47#endif // itkMakeFilled_h
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
constexpr TContainer MakeFilled(typename TContainer::const_reference value)
Definition: itkMakeFilled.h:29