Wildmeshing Toolkit
Loading...
Searching...
No Matches
remove_void_types.hpp
Go to the documentation of this file.
1
#pragma once
2
#include <tuple>
3
#include "
concatenate_types.hpp
"
4
5
6
namespace
wmtk::utils::metaprogramming::tuple
{
7
namespace
detail {
8
template
<
typename
...>
9
struct
remove_void
10
{
11
using
type
= std::tuple<>;
12
};
13
template
<>
14
struct
remove_void<void>
15
{
16
using
type
= std::tuple<>;
17
};
18
template
<
typename
T>
19
struct
remove_void<T>
20
{
21
using
type
= std::tuple<T>;
22
};
23
24
template
<
typename
... Ts>
25
using
remove_void_t
=
typename
remove_void
<Ts...>::type;
26
27
template
<
typename
T,
typename
RemainingTuple>
28
struct
remove_void_tuple
29
{
30
};
31
template
<
typename
T,
typename
... Ts>
32
struct
remove_void_tuple
<T,
std
::tuple<Ts...>>
33
{
34
constexpr
static
bool
t_not_void = !std::is_same_v<T, void>;
35
using
adding_t_type
= std::conditional_t<t_not_void, std::tuple<T>, std::tuple<>>;
36
37
using
type
=
concatenate_types_t
<
adding_t_type
,
remove_void_t
<Ts...>>;
38
};
39
40
template
<
typename
T,
typename
... Ts>
41
struct
remove_void
<T, Ts...>
42
{
43
using
type
=
typename
remove_void_tuple
<T, std::tuple<Ts...>>
::type
;
44
};
45
}
// namespace detail
46
47
template
<
typename
... Ts>
48
using
remove_void_types_t
=
detail::remove_void_t
<Ts...>;
49
}
// namespace wmtk::utils::metaprogramming::tuple
concatenate_types.hpp
std
Definition
autodiff.h:995
wmtk::utils::metaprogramming::tuple::detail::remove_void_t
typename remove_void< Ts... >::type remove_void_t
Definition
remove_void_types.hpp:25
wmtk::utils::metaprogramming::tuple
Definition
as_variant_type.hpp:6
wmtk::utils::metaprogramming::tuple::concatenate_types_t
typename concatenate_types< T, U >::type concatenate_types_t
Definition
concatenate_types.hpp:26
wmtk::utils::metaprogramming::tuple::remove_void_types_t
detail::remove_void_t< Ts... > remove_void_types_t
Definition
remove_void_types.hpp:48
wmtk::utils::metaprogramming::tuple::detail::remove_void< T, Ts... >::type
typename remove_void_tuple< T, std::tuple< Ts... > >::type type
Definition
remove_void_types.hpp:43
wmtk::utils::metaprogramming::tuple::detail::remove_void< T >::type
std::tuple< T > type
Definition
remove_void_types.hpp:21
wmtk::utils::metaprogramming::tuple::detail::remove_void< void >::type
std::tuple<> type
Definition
remove_void_types.hpp:16
wmtk::utils::metaprogramming::tuple::detail::remove_void_tuple< T, std::tuple< Ts... > >::type
concatenate_types_t< adding_t_type, remove_void_t< Ts... > > type
Definition
remove_void_types.hpp:37
wmtk::utils::metaprogramming::tuple::detail::remove_void_tuple< T, std::tuple< Ts... > >::adding_t_type
std::conditional_t< t_not_void, std::tuple< T >, std::tuple<> > adding_t_type
Definition
remove_void_types.hpp:35
wmtk::utils::metaprogramming::tuple::detail::remove_void_tuple
Definition
remove_void_types.hpp:29
wmtk::utils::metaprogramming::tuple::detail::remove_void
Definition
remove_void_types.hpp:10
wmtk::utils::metaprogramming::tuple::detail::remove_void::type
std::tuple<> type
Definition
remove_void_types.hpp:11
src
wmtk
utils
metaprogramming
tuple
remove_void_types.hpp
Generated by
1.9.8