diff --git a/include/sqlpp11/detail/arg_selector.h b/include/sqlpp11/detail/arg_selector.h index 5332f33f..0b54676a 100644 --- a/include/sqlpp11/detail/arg_selector.h +++ b/include/sqlpp11/detail/arg_selector.h @@ -34,6 +34,8 @@ namespace sqlpp template struct arg_selector { + static Target _(Target, Target t) { return t; } + template static Target _(X, Target t) { return t; } diff --git a/include/sqlpp11/remove.h b/include/sqlpp11/remove.h index 557b0f6d..5392885e 100644 --- a/include/sqlpp11/remove.h +++ b/include/sqlpp11/remove.h @@ -35,6 +35,7 @@ #include #include #include +#include namespace sqlpp { @@ -75,25 +76,11 @@ namespace sqlpp remove_t() {} - template - remove_t(X x, Table table): - _table(table), - _using(x._using), - _where(x._where) - {} - - template - remove_t(X x, Using using_): - _table(x._table), - _using(using_), - _where(x._where) - {} - - template - remove_t(X x, Where where): - _table(x._table), - _using(x._using), - _where(where) + template + remove_t(Statement s, T t): + _table(detail::arg_selector::_(s._table, t)), + _using(detail::arg_selector::_(s._using, t)), + _where(detail::arg_selector::_(s._where, t)) {} remove_t(const remove_t&) = default; diff --git a/include/sqlpp11/update.h b/include/sqlpp11/update.h index 5c8be581..39733d9a 100644 --- a/include/sqlpp11/update.h +++ b/include/sqlpp11/update.h @@ -35,6 +35,7 @@ #include #include #include +#include namespace sqlpp { @@ -75,29 +76,15 @@ namespace sqlpp using _parameter_tuple_t = std::tuple; using _parameter_list_t = typename make_parameter_list_t::type; + // Constructors update_t() {} - // Constructors - template - update_t(X x, Table table): - _table(table), - _update_list(x._update_list), - _where(x._where) - {} - - template - update_t(X x, UpdateList update_list): - _table(x._table), - _update_list(update_list), - _where(x._where) - {} - - template - update_t(X x, Where where): - _table(x._table), - _update_list(x._update_list), - _where(where) + template + update_t(Statement s, T t): + _table(detail::arg_selector
::_(s._table, t)), + _update_list(detail::arg_selector::_(s._update_list, t)), + _where(detail::arg_selector::_(s._where, t)) {} update_t(const update_t&) = default;