Commit 33a5f135 authored by louiz’'s avatar louiz’

Remove a variable template usage

Because it’s only supported in gcc>=5.0
parent 23e51e81
...@@ -30,13 +30,13 @@ struct Row ...@@ -30,13 +30,13 @@ struct Row
} }
template <bool Coucou=true> template <bool Coucou=true>
void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<!is_one_of<Id, T...> && Coucou>::type* = nullptr) void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<!is_one_of<Id, T...>::value && Coucou>::type* = nullptr)
{ {
this->insert(*db); this->insert(*db);
} }
template <bool Coucou=true> template <bool Coucou=true>
void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<is_one_of<Id, T...> && Coucou>::type* = nullptr) void save(std::unique_ptr<DatabaseEngine>& db, typename std::enable_if<is_one_of<Id, T...>::value && Coucou>::type* = nullptr)
{ {
const Id& id = std::get<Id>(this->columns); const Id& id = std::get<Id>(this->columns);
if (id.value == Id::unset_value) if (id.value == Id::unset_value)
......
...@@ -3,15 +3,12 @@ ...@@ -3,15 +3,12 @@
#include <type_traits> #include <type_traits>
template <typename...> template <typename...>
struct is_one_of_implem { struct is_one_of {
static constexpr bool value = false; static constexpr bool value = false;
}; };
template <typename F, typename S, typename... T> template <typename F, typename S, typename... T>
struct is_one_of_implem<F, S, T...> { struct is_one_of<F, S, T...> {
static constexpr bool value = static constexpr bool value =
std::is_same<F, S>::value || is_one_of_implem<F, T...>::value; std::is_same<F, S>::value || is_one_of<F, T...>::value;
}; };
template<typename... T>
constexpr bool is_one_of = is_one_of_implem<T...>::value;
...@@ -175,11 +175,11 @@ TEST_CASE("dirname") ...@@ -175,11 +175,11 @@ TEST_CASE("dirname")
TEST_CASE("is_in") TEST_CASE("is_in")
{ {
CHECK((is_one_of<int, float, std::string, int>) == true); CHECK((is_one_of<int, float, std::string, int>::value) == true);
CHECK((is_one_of<int, float, std::string>) == false); CHECK((is_one_of<int, float, std::string>::value) == false);
CHECK((is_one_of<int>) == false); CHECK((is_one_of<int>::value) == false);
CHECK((is_one_of<int, int>) == true); CHECK((is_one_of<int, int>::value) == true);
CHECK((is_one_of<bool, int>) == false); CHECK((is_one_of<bool, int>::value) == false);
CHECK((is_one_of<bool, bool>) == true); CHECK((is_one_of<bool, bool>::value) == true);
CHECK((is_one_of<bool, bool, bool, bool, bool, int>) == true); CHECK((is_one_of<bool, bool, bool, bool, bool, int>::value) == true);
} }
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