diff options
author | louiz’ <louiz@louiz.org> | 2018-03-17 17:33:29 +0100 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2018-03-17 17:34:00 +0100 |
commit | 8c483aa805eb3da25be685ee875555662cab1038 (patch) | |
tree | 6d2f5f9d60f938b05ddf47bb6b56e51bcd42472f /src/database/table.hpp | |
parent | f8a1048ffeec6322c1e64a0eda7636a977669898 (diff) | |
download | biboumi-8c483aa805eb3da25be685ee875555662cab1038.tar.gz biboumi-8c483aa805eb3da25be685ee875555662cab1038.tar.bz2 biboumi-8c483aa805eb3da25be685ee875555662cab1038.tar.xz biboumi-8c483aa805eb3da25be685ee875555662cab1038.zip |
Re-apply "Use if constexpr to make things a lot more readable"c++17
This reverts commit d0e3c71b91f1a1c1780158789fd42b8ac7209495.
Diffstat (limited to 'src/database/table.hpp')
-rw-r--r-- | src/database/table.hpp | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/database/table.hpp b/src/database/table.hpp index 680e7cc..eb68418 100644 --- a/src/database/table.hpp +++ b/src/database/table.hpp @@ -93,36 +93,32 @@ class Table private: template <std::size_t N=0> - typename std::enable_if<N < sizeof...(T), void>::type - add_column_if_not_exists(DatabaseEngine& db, const std::set<std::string>& existing_columns) + void add_column_if_not_exists(DatabaseEngine& db, const std::set<std::string>& existing_columns) { - using ColumnType = typename std::remove_reference<decltype(std::get<N>(std::declval<ColumnTypes>()))>::type; - if (existing_columns.count(ColumnType::name) == 0) - add_column_to_table<ColumnType>(db, this->name); - add_column_if_not_exists<N+1>(db, existing_columns); + if constexpr(N < sizeof...(T)) + { + using ColumnType = typename std::remove_reference<decltype(std::get<N>(std::declval<ColumnTypes>()))>::type; + if (existing_columns.count(ColumnType::name) == 0) + add_column_to_table<ColumnType>(db, this->name); + add_column_if_not_exists<N + 1>(db, existing_columns); + } } - template <std::size_t N=0> - typename std::enable_if<N == sizeof...(T), void>::type - add_column_if_not_exists(DatabaseEngine&, const std::set<std::string>&) - {} template <std::size_t N=0> - typename std::enable_if<N < sizeof...(T), void>::type - add_column_create(DatabaseEngine& db, std::string& str) + void add_column_create(DatabaseEngine& db, std::string& str) { - using ColumnType = typename std::remove_reference<decltype(std::get<N>(std::declval<ColumnTypes>()))>::type; - str += ColumnType::name; - str += " "; - str += ToSQLType<ColumnType>(db); - if (N != sizeof...(T) - 1) - str += ","; - - add_column_create<N+1>(db, str); + if constexpr(N < sizeof...(T)) + { + using ColumnType = typename std::remove_reference<decltype(std::get<N>(std::declval<ColumnTypes>()))>::type; + str += ColumnType::name; + str += " "; + str += ToSQLType<ColumnType>(db); + if (N != sizeof...(T) - 1) + str += ","; + + add_column_create<N + 1>(db, str); + } } - template <std::size_t N=0> - typename std::enable_if<N == sizeof...(T), void>::type - add_column_create(DatabaseEngine&, std::string&) - { } const std::string name; }; |