23#ifndef VCL_MISC_NESTED_INITIALIZER_LISTS_H
24#define VCL_MISC_NESTED_INITIALIZER_LISTS_H
31#include <initializer_list>
40template<
typename T, std::
size_t L>
41struct NestedInitializerListsTraits
43 using type = std::initializer_list<
44 typename NestedInitializerListsTraits<T, L - 1>::type>;
49struct NestedInitializerListsTraits<T, 0>
65template<
typename T, std::
size_t L>
66using NestedInitializerLists = detail::NestedInitializerListsTraits<T, L>::type;
76template<
typename T, std::
size_t L>
106 std::list<size_t>
final;
109 std::list<size_t>
l =
119 assert(
l.size() ==
final.size());
120 std::list<size_t>::iterator
it =
l.begin();
121 for (
size_t& s :
final) {
128 final.push_front(
values.size());
154 template<
typename T_Function>
192 template<
typename T_Function>
196 std::list<size_t>
sizes)
207 std::size_t
count = 1;
208 for (
size_t s :
sizes)
227 std::list<size_t> dim;
228 dim.push_back(
values.size());
232 template<
typename T_Function>
236 std::list<size_t>
sizes)
239 for (
size_t s :
sizes)
246 while (
count-- > 0) {
252 template<
typename T_Function>
The NestedInitializerListsProcessor class.
Definition nested_initializer_lists.h:78
static void processElements(NestedInitializerLists< T, L > values, T_Function function, std::list< size_t > sizes)
Applies the lambda function passed as parameter to all the elements of the NestedInitializerLists.
Definition nested_initializer_lists.h:193
static std::list< size_t > maxDimensionsLevels(NestedInitializerLists< T, L > values)
Returns a list containing the maximum size of elements for every dimension.
Definition nested_initializer_lists.h:103
static void processElements(NestedInitializerLists< T, L > values, T_Function function)
Applies the lambda function passed as parameter to all the elements of the NestedInitializerLists.
Definition nested_initializer_lists.h:155
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43