SimiLie
Loading...
Searching...
No Matches
type_seq_conversion.hpp
1// SPDX-FileCopyrightText: 2024 Baptiste Legouix
2// SPDX-License-Identifier: MIT
3
4#pragma once
5
6#include <ddc/ddc.hpp>
7
8namespace sil {
9
10namespace misc {
11
12namespace detail {
13
14template <class T>
15struct ToTypeSeq
16{
17 using type = ddc::detail::TypeSeq<>;
18};
19
20template <template <class...> class T, class... Arg>
21struct ToTypeSeq<T<Arg...>>
22{
23 using type = ddc::detail::TypeSeq<Arg...>;
24};
25
26} // namespace detail
27
28template <class T>
29using to_type_seq_t = typename detail::ToTypeSeq<T>::type;
30
31namespace detail {
32
33template <template <class...> class T, class Seq>
34struct ConvertTypeSeqTo;
35
36template <template <class...> class T, class... Arg>
37struct ConvertTypeSeqTo<T, ddc::detail::TypeSeq<Arg...>>
38{
39 using type = T<Arg...>;
40};
41
42} // namespace detail
43
44template <template <class...> class T, class Seq>
45using convert_type_seq_to_t = typename detail::ConvertTypeSeqTo<T, Seq>::type;
46
47} // namespace misc
48
49} // namespace sil
typename detail::ToTypeSeq< T >::type to_type_seq_t
typename detail::ConvertTypeSeqTo< T, Seq >::type convert_type_seq_to_t
The top-level namespace of SimiLie.
Definition csr.hpp:14