Commit 7bc4547c authored by Dominik Charousset's avatar Dominik Charousset

Remove unnecessary vararg parameters in type_list

parent c0817b6b
...@@ -20,9 +20,9 @@ ...@@ -20,9 +20,9 @@
#ifndef CAF_DETAIL_TYPE_LIST_HPP #ifndef CAF_DETAIL_TYPE_LIST_HPP
#define CAF_DETAIL_TYPE_LIST_HPP #define CAF_DETAIL_TYPE_LIST_HPP
#include <cstddef>
#include <typeinfo> #include <typeinfo>
#include <type_traits> #include <type_traits>
#include <cstddef>
#include "caf/unit.hpp" #include "caf/unit.hpp"
...@@ -61,13 +61,13 @@ struct is_type_list<type_list<Ts...>> { ...@@ -61,13 +61,13 @@ struct is_type_list<type_list<Ts...>> {
template <class List> template <class List>
struct tl_head; struct tl_head;
template <template <class...> class List> template <>
struct tl_head<List<>> { struct tl_head<type_list<>> {
using type = void; using type = void;
}; };
template <template <class...> class List, typename T0, class... Ts> template <typename T0, class... Ts>
struct tl_head<List<T0, Ts...>> { struct tl_head<type_list<T0, Ts...>> {
using type = T0; using type = T0;
}; };
...@@ -79,14 +79,14 @@ struct tl_head<List<T0, Ts...>> { ...@@ -79,14 +79,14 @@ struct tl_head<List<T0, Ts...>> {
template <class List> template <class List>
struct tl_tail; struct tl_tail;
template <template <class...> class List> template <>
struct tl_tail<List<>> { struct tl_tail<type_list<>> {
using type = List<>; using type = type_list<>;
}; };
template <template <class...> class List, typename T0, class... Ts> template <typename T0, class... Ts>
struct tl_tail<List<T0, Ts...>> { struct tl_tail<type_list<T0, Ts...>> {
using type = List<Ts...>; using type = type_list<Ts...>;
}; };
// size_t size(type_list) // size_t size(type_list)
...@@ -97,13 +97,13 @@ struct tl_tail<List<T0, Ts...>> { ...@@ -97,13 +97,13 @@ struct tl_tail<List<T0, Ts...>> {
template <class List> template <class List>
struct tl_size; struct tl_size;
template <template <class...> class List, class... Ts> template <class... Ts>
struct tl_size<List<Ts...>> { struct tl_size<type_list<Ts...>> {
static constexpr size_t value = sizeof...(Ts); static constexpr size_t value = sizeof...(Ts);
}; };
template <template <class...> class List, class... Ts> template <class... Ts>
constexpr size_t tl_size<List<Ts...>>::value; constexpr size_t tl_size<type_list<Ts...>>::value;
// T back(type_list) // T back(type_list)
...@@ -113,18 +113,18 @@ constexpr size_t tl_size<List<Ts...>>::value; ...@@ -113,18 +113,18 @@ constexpr size_t tl_size<List<Ts...>>::value;
template <class List> template <class List>
struct tl_back; struct tl_back;
template <template <class...> class List> template <>
struct tl_back<List<>> { struct tl_back<type_list<>> {
using type = unit_t; using type = unit_t;
}; };
template <template <class...> class List, typename T0> template <typename T0>
struct tl_back<List<T0>> { struct tl_back<type_list<T0>> {
using type = T0; using type = T0;
}; };
template <template <class...> class List, typename T0, typename T1, class... Ts> template <typename T0, typename T1, class... Ts>
struct tl_back<List<T0, T1, Ts...>> { struct tl_back<type_list<T0, T1, Ts...>> {
// remaining arguments are forwarded as type_list to prevent // remaining arguments are forwarded as type_list to prevent
// recursive instantiation of List class // recursive instantiation of List class
using type = typename tl_back<type_list<T1, Ts...>>::type; using type = typename tl_back<type_list<T1, Ts...>>::type;
...@@ -363,14 +363,13 @@ struct tl_reverse { ...@@ -363,14 +363,13 @@ struct tl_reverse {
template <class List, template <class> class Pred, int Pos = 0> template <class List, template <class> class Pred, int Pos = 0>
struct tl_find_impl; struct tl_find_impl;
template <template <class...> class TL, template <class> class Pred, int Pos> template <template <class> class Pred, int Pos>
struct tl_find_impl<TL<>, Pred, Pos> { struct tl_find_impl<type_list<>, Pred, Pos> {
static constexpr int value = -1; static constexpr int value = -1;
}; };
template <template <class...> class List, template <class> class Pred, template <template <class> class Pred, int Pos, class T0, class... Ts>
int Pos, class T0, class... Ts> struct tl_find_impl<type_list<T0, Ts...>, Pred, Pos> {
struct tl_find_impl<List<T0, Ts...>, Pred, Pos> {
// always use type_list for recursive calls to minimize instantiation costs // always use type_list for recursive calls to minimize instantiation costs
static constexpr int value = static constexpr int value =
Pred<T0>::value ? Pos Pred<T0>::value ? Pos
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment