Project
Loading...
Searching...
No Matches
MakeArray.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef O2_MCH_RAW_IMPL_HELPERS_MAKE_ARRAY_H
13#define O2_MCH_RAW_IMPL_HELPERS_MAKE_ARRAY_H
14
15#include <array>
16#include <type_traits>
17
18namespace o2::mch::raw::impl
19{
20
21template <typename CTOR, size_t... S>
22std::array<std::invoke_result_t<CTOR, size_t>, sizeof...(S)> makeArray(CTOR&& ctor,
23 std::index_sequence<S...>)
24{
25 return std::array<std::invoke_result_t<CTOR, size_t>, sizeof...(S)>{{ctor(S)...}};
26}
27
28template <size_t N, typename CTOR>
29std::array<std::invoke_result_t<CTOR, size_t>, N> makeArray(CTOR&& ctor)
30{
31 return makeArray(std::forward<CTOR>(ctor), std::make_index_sequence<N>());
32}
33
34} // namespace o2::mch::raw::impl
35#endif
std::array< std::invoke_result_t< CTOR, size_t >, sizeof...(S)> makeArray(CTOR &&ctor, std::index_sequence< S... >)
Definition MakeArray.h:22