From 8c483aa805eb3da25be685ee875555662cab1038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Sat, 17 Mar 2018 17:33:29 +0100 Subject: Re-apply "Use if constexpr to make things a lot more readable" This reverts commit d0e3c71b91f1a1c1780158789fd42b8ac7209495. --- src/database/insert_query.hpp | 91 +++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 51 deletions(-) (limited to 'src/database/insert_query.hpp') diff --git a/src/database/insert_query.hpp b/src/database/insert_query.hpp index 04c098c..ed1944f 100644 --- a/src/database/insert_query.hpp +++ b/src/database/insert_query.hpp @@ -11,20 +11,17 @@ #include template -typename std::enable_if::type -update_autoincrement_id(std::tuple& columns, Statement& statement) +void update_autoincrement_id(std::tuple& columns, Statement& statement) { - using ColumnType = typename std::decay(columns))>::type; - if (std::is_same::value) - auto&& column = std::get(columns); - update_autoincrement_id(columns, statement); + if constexpr(N < sizeof...(T)) + { + using ColumnType = typename std::decay(columns))>::type; + if (std::is_same::value) + auto&& column = std::get(columns); + update_autoincrement_id(columns, statement); + } } -template -typename std::enable_if::type -update_autoincrement_id(std::tuple&, Statement&) -{} - struct InsertQuery: public Query { template @@ -53,23 +50,20 @@ struct InsertQuery: public Query } template - typename std::enable_if::type - bind_param(const std::tuple& columns, Statement& statement, int index=1) + void bind_param(const std::tuple& columns, Statement& statement, int index=1) { - auto&& column = std::get(columns); - using ColumnType = std::decay_t; + if constexpr(N < sizeof...(T)) + { + auto&& column = std::get(columns); + using ColumnType = std::decay_t; - if (!std::is_same::value) - actual_bind(statement, column.value, index++); + if constexpr(!std::is_same::value) + actual_bind(statement, column.value, index++); - this->bind_param(columns, statement, index); + this->bind_param(columns, statement, index); + } } - template - typename std::enable_if::type - bind_param(const std::tuple&, Statement&, int) - {} - template void insert_values(const std::tuple& columns) { @@ -79,23 +73,21 @@ struct InsertQuery: public Query } template - typename std::enable_if::type - insert_value(const std::tuple& columns, int index=1) + void insert_value(const std::tuple& columns, int index=1) { - using ColumnType = std::decay_t(columns))>; - - if (!std::is_same::value) + if constexpr(N < sizeof...(T)) { - this->body += "$" + std::to_string(index++); - if (N != sizeof...(T) - 1) - this->body += ", "; + using ColumnType = std::decay_t(columns))>; + + if (!std::is_same::value) + { + this->body += "$" + std::to_string(index++); + if (N != sizeof...(T) - 1) + this->body += ", "; + } + this->insert_value(columns, index); } - this->insert_value(columns, index); } - template - typename std::enable_if::type - insert_value(const std::tuple&, const int) - { } template void insert_col_names(const std::tuple& columns) @@ -106,24 +98,21 @@ struct InsertQuery: public Query } template - typename std::enable_if::type - insert_col_name(const std::tuple& columns) + void insert_col_name(const std::tuple& columns) { - using ColumnType = std::decay_t(columns))>; - - if (!std::is_same::value) + if constexpr(N < sizeof...(T)) { - this->body += ColumnType::name; + using ColumnType = std::decay_t(columns))>; - if (N < (sizeof...(T) - 1)) - this->body += ", "; - } + if (!std::is_same::value) + { + this->body += ColumnType::name; - this->insert_col_name(columns); - } + if (N < (sizeof...(T) - 1)) + this->body += ", "; + } - template - typename std::enable_if::type - insert_col_name(const std::tuple&) - {} + this->insert_col_name(columns); + } + } }; -- cgit v1.2.3