IgANet
IgANets - Isogeometric Analysis Networks
Loading...
Searching...
No Matches
type_traits.hpp
Go to the documentation of this file.
1
15#pragma once
16
17#include <type_traits>
18
19namespace iganet {
20namespace utils {
21
24template <class T> struct is_tuple : std::false_type {};
25
26template <class... Ts> struct is_tuple<std::tuple<Ts...>> : std::true_type {};
28
29template <class T> inline constexpr bool is_tuple_v = is_tuple<T>::value;
30
33template <class T> struct is_tuple_of_tuples : std::false_type {};
34
35template <class... Ts>
37 : std::common_type<is_tuple<Ts>...>::type {};
39
41template <class T>
43
45template <class T>
47
50template <typename... Tuples> struct tuple_cat;
51
52template <> struct tuple_cat<> {
53 using type = std::tuple<>;
54};
55
56template <typename... Ts, typename... Tuples>
57struct tuple_cat<std::tuple<Ts...>, Tuples...> {
58 using type = decltype(std::tuple_cat(
59 std::declval<std::tuple<Ts...>>(),
60 std::declval<typename tuple_cat<Tuples...>::type>()));
61};
62
63template <typename T, typename... Tuples> struct tuple_cat<T, Tuples...> {
64 using type = decltype(std::tuple_cat(
65 std::declval<std::tuple<T>>(),
66 std::declval<typename tuple_cat<Tuples...>::type>()));
67};
69
71template <typename... Tuples>
72using tuple_cat_t = typename tuple_cat<Tuples...>::type;
73
75template <typename... Tuples>
76inline constexpr auto tuple_cat_v = tuple_cat<Tuples...>::value;
77
78} // namespace utils
79} // namespace iganet
std::tuple<> type
Definition type_traits.hpp:53
decltype(std::tuple_cat(std::declval< std::tuple< Ts... > >(), std::declval< typename tuple_cat< Tuples... >::type >())) type
Definition type_traits.hpp:60
constexpr auto is_tuple_of_tuples_v
Alias for is_tuple_of_tuples::value.
Definition type_traits.hpp:46
typename tuple_cat< Tuples... >::type tuple_cat_t
Alias for tuple_cat::type.
Definition type_traits.hpp:72
typename is_tuple_of_tuples< T >::type is_tuple_of_tuples_t
Alias for is_tuple_of_tuples::type.
Definition type_traits.hpp:42
constexpr auto tuple_cat_v
Alias for tuple_cat::value.
Definition type_traits.hpp:76
decltype(std::tuple_cat(std::declval< std::tuple< T > >(), std::declval< typename tuple_cat< Tuples... >::type >())) type
Definition type_traits.hpp:66
constexpr bool is_tuple_v
Definition type_traits.hpp:29
Type trait for concatenating std::tuples.
Definition type_traits.hpp:50
Definition boundary.hpp:22
constexpr bool is_SplineType_v
Alias to the value of is_SplineType.
Definition bspline.hpp:3243
STL namespace.
Type trait for std::tuple<std::tuple> type.
Definition type_traits.hpp:33
Type trait for std::tuple type.
Definition type_traits.hpp:24