From 34376bdd28fb83db51d27eec4a05fd841a804470 Mon Sep 17 00:00:00 2001 From: rbock Date: Sun, 5 Jul 2015 13:40:06 +0200 Subject: [PATCH] Fixed compile error for clang-3.4 and gcc-4.8 --- include/sqlpp11/alias.h | 10 ++++++++++ include/sqlpp11/detail/copy_tuple_args.h | 8 +++++++- include/sqlpp11/multi_column.h | 4 ++-- include/sqlpp11/select_column_list.h | 7 ------- tests/Interpret.cpp | 1 + 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/include/sqlpp11/alias.h b/include/sqlpp11/alias.h index 013d2e6f..720bb52e 100644 --- a/include/sqlpp11/alias.h +++ b/include/sqlpp11/alias.h @@ -43,6 +43,16 @@ namespace sqlpp using _alias_t = typename AliasProvider::_alias_t; + expression_alias_t(Expression expression): + _expression(expression) + {} + + expression_alias_t(const expression_alias_t&) = default; + expression_alias_t(expression_alias_t&&) = default; + expression_alias_t& operator=(const expression_alias_t&) = default; + expression_alias_t& operator=(expression_alias_t&&) = default; + ~expression_alias_t() = default; + Expression _expression; }; diff --git a/include/sqlpp11/detail/copy_tuple_args.h b/include/sqlpp11/detail/copy_tuple_args.h index 6aeeff88..1a58dac0 100644 --- a/include/sqlpp11/detail/copy_tuple_args.h +++ b/include/sqlpp11/detail/copy_tuple_args.h @@ -40,7 +40,7 @@ namespace sqlpp template struct as_column_tuple { - static std::tuple> _(T t) { return std::tuple>{ auto_alias_t{t} }; } + static std::tuple> _(T t) { return std::tuple>(auto_alias_t{t}); } }; template @@ -70,6 +70,12 @@ namespace sqlpp template class Target, typename First, typename T> using copy_tuple_args_t = typename copy_tuple_args_impl::type; + template + auto column_tuple_merge(Columns... columns) -> decltype(std::tuple_cat(as_column_tuple::_(columns)...)) + { + return std::tuple_cat(as_column_tuple::_(columns)...); + } + } } diff --git a/include/sqlpp11/multi_column.h b/include/sqlpp11/multi_column.h index c1a8704e..0c17a263 100644 --- a/include/sqlpp11/multi_column.h +++ b/include/sqlpp11/multi_column.h @@ -129,8 +129,8 @@ namespace sqlpp { template using make_multi_column_t = - detail::copy_tuple_args_t::_(std::declval())...))>; + copy_tuple_args_t()...))>; } template diff --git a/include/sqlpp11/select_column_list.h b/include/sqlpp11/select_column_list.h index 9d73be09..d7ed448a 100644 --- a/include/sqlpp11/select_column_list.h +++ b/include/sqlpp11/select_column_list.h @@ -338,17 +338,10 @@ namespace sqlpp namespace detail { - template - auto column_tuple_merge(Columns... columns) -> decltype(std::tuple_cat(as_column_tuple::_(columns)...)) - { - return std::tuple_cat(as_column_tuple::_(columns)...); - } - template using make_select_column_list_t = copy_tuple_args_t()...))>; - } struct no_select_column_list_t diff --git a/tests/Interpret.cpp b/tests/Interpret.cpp index d2a597f6..834ee738 100644 --- a/tests/Interpret.cpp +++ b/tests/Interpret.cpp @@ -36,6 +36,7 @@ int Interpret(int, char**) test::TabFoo f; test::TabBar t; + select(t.alpha.as(t.beta)); serialize(insert_into(t).columns(t.beta, t.gamma), printer).str(); {