Iros
 
Loading...
Searching...
No Matches
to_array.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/meta/algorithm.h"
4#include "di/meta/core.h"
5#include "di/meta/language.h"
7#include "di/util/move.h"
9
10namespace di::vocab {
11template<typename T, types::size_t size>
12requires(concepts::CopyConstructible<T> && !concepts::LanguageArray<T>)
13constexpr auto to_array(T (&array)[size]) {
14 return [&]<types::size_t... indices>(meta::ListV<indices...>) {
15 return Array<meta::RemoveCV<T>, size> { { array[indices]... } };
17}
18
19template<typename T, types::size_t size>
21constexpr auto to_array(T (&&array)[size]) -> Array<meta::RemoveCV<T>, size> {
22 return [&]<types::size_t... indices>(meta::ListV<indices...>) {
23 return Array<meta::RemoveCV<T>, size> { { util::move(array[indices])... } };
25}
26}
27
28namespace di {
29using vocab::to_array;
30}
Definition language.h:110
Definition operations.h:43
MakeIntegerSequence< usize, count > MakeIndexSequence
Definition algorithm.h:285
std::size_t size_t
Definition size_t.h:12
Definition lazy.h:165
constexpr auto to_array(T(&array)[size])
Definition to_array.h:13
Definition zstring_parser.h:9
constexpr auto size
Definition size.h:54
Definition core.h:8
Definition span_fixed_size.h:37