diff options
author | louiz’ <louiz@louiz.org> | 2017-07-08 12:36:08 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2017-07-08 12:36:08 +0200 |
commit | cf56b60fd340dc62f90b5b8d3c86d68da347abee (patch) | |
tree | 56ccf812c480858b268b7cd30deb69358f129a10 /src/database/table.hpp | |
parent | 870d462914d35d8d8054fe521c07c43c37bc1141 (diff) | |
download | biboumi-cf56b60fd340dc62f90b5b8d3c86d68da347abee.tar.gz biboumi-cf56b60fd340dc62f90b5b8d3c86d68da347abee.tar.bz2 biboumi-cf56b60fd340dc62f90b5b8d3c86d68da347abee.tar.xz biboumi-cf56b60fd340dc62f90b5b8d3c86d68da347abee.zip |
Remove all the empty “options” members in Column classes
By using SFINAE to use that member only when it exists.
Diffstat (limited to 'src/database/table.hpp')
-rw-r--r-- | src/database/table.hpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/database/table.hpp b/src/database/table.hpp index 411ac6a..f2f70bb 100644 --- a/src/database/table.hpp +++ b/src/database/table.hpp @@ -28,6 +28,17 @@ void add_column_to_table(sqlite3* db, const std::string& table_name) } } + +template <typename ColumnType, decltype(ColumnType::options) = nullptr> +void append_option(std::string& s) +{ + s += " "s + ColumnType::options; +} + +template <typename> +void append_option(...) +{ } + template <typename... T> class Table { @@ -110,14 +121,13 @@ class Table str += ColumnType::name; str += " "; str += TypeToSQLType<RealType>::type; - str += " "s + ColumnType::options; + append_option<ColumnType>(str); if (N != sizeof...(T) - 1) str += ","; str += "\n"; add_column_create<N+1>(str); } - template <std::size_t N=0> typename std::enable_if<N == sizeof...(T), void>::type add_column_create(std::string&) |