alpaka
Abstraction Library for Parallel Kernel Acceleration
TypeListOps.hpp
Go to the documentation of this file.
1
/* Copyright 2022 Bernhard Manfred Gruber
2
* SPDX-License-Identifier: MPL-2.0
3
*/
4
5
#pragma once
6
7
#include <type_traits>
8
9
namespace
alpaka::meta
10
{
11
namespace
detail
12
{
13
template
<
typename
List>
14
struct
Front
15
{
16
};
17
18
template
<
template
<
typename
...>
class
List,
typename
Head,
typename
... Tail>
19
struct
Front
<List<Head, Tail...>>
20
{
21
using
type
= Head;
22
};
23
}
// namespace detail
24
25
template
<
typename
List>
26
using
Front
=
typename
detail::Front<List>::type
;
27
28
template
<
typename
List,
typename
Value>
29
struct
Contains
: std::false_type
30
{
31
};
32
33
template
<
template
<
typename
...>
class
List,
typename
Head,
typename
... Tail,
typename
Value>
34
struct
Contains
<List<Head, Tail...>, Value>
35
{
36
static
constexpr
bool
value = std::is_same_v<Head, Value> ||
Contains
<List<Tail...>, Value>::value;
37
};
38
}
// namespace alpaka::meta
alpaka::meta
Definition:
Apply.hpp:8
alpaka::meta::Front
typename detail::Front< List >::type Front
Definition:
TypeListOps.hpp:26
alpaka::meta::Contains
Definition:
TypeListOps.hpp:30
alpaka::meta::detail::Front< List< Head, Tail... > >::type
Head type
Definition:
TypeListOps.hpp:21
alpaka::meta::detail::Front
Definition:
TypeListOps.hpp:15
include
alpaka
meta
TypeListOps.hpp
Generated on Wed Apr 17 2024 12:07:10 for alpaka by
1.9.1