mirror of
https://github.com/rbock/sqlpp11.git
synced 2024-11-16 04:47:18 +08:00
added comments regarding msvc bug workarounds
This commit is contained in:
parent
4e898368fa
commit
46cb009ba4
@ -123,6 +123,13 @@ namespace sqlpp
|
|||||||
Expr,
|
Expr,
|
||||||
wrap_operand_t<T>>;
|
wrap_operand_t<T>>;
|
||||||
|
|
||||||
|
// workaround for msvs bug
|
||||||
|
// template <template <typename Lhs, typename... Rhs> class NewExpr, typename... T>
|
||||||
|
// using _new_nary_expression_t =
|
||||||
|
// new_nary_expression_t<logic::all_t<check_rhs_comparison_operand_t<ValueType, wrap_operand_t<T>>::value...>,
|
||||||
|
// NewExpr,
|
||||||
|
// Expr,
|
||||||
|
// wrap_operand_t<T>...>;
|
||||||
template <template <typename Lhs, typename... Rhs> class NewExpr, typename... T>
|
template <template <typename Lhs, typename... Rhs> class NewExpr, typename... T>
|
||||||
struct _new_nary_expression
|
struct _new_nary_expression
|
||||||
{
|
{
|
||||||
@ -208,6 +215,13 @@ namespace sqlpp
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Hint: use value_list wrapper for containers...
|
// Hint: use value_list wrapper for containers...
|
||||||
|
// workaround for msvs bug
|
||||||
|
// template <typename... T>
|
||||||
|
// _new_nary_expression_t<in_t, T...> in(T... t) const
|
||||||
|
// {
|
||||||
|
// check_rhs_in_arguments_t<ValueType, wrap_operand_t<T>...>::_();
|
||||||
|
// return {*static_cast<const Expr*>(this), wrap_operand_t<T>{t}...};
|
||||||
|
// }
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
typename _new_nary_expression<in_t, T...>::type in(T... t) const
|
typename _new_nary_expression<in_t, T...>::type in(T... t) const
|
||||||
{
|
{
|
||||||
@ -215,6 +229,13 @@ namespace sqlpp
|
|||||||
return {*static_cast<const Expr*>(this), typename wrap_operand<T>::type{t}...};
|
return {*static_cast<const Expr*>(this), typename wrap_operand<T>::type{t}...};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// workaround for msvs bug
|
||||||
|
// template <typename... T>
|
||||||
|
// _new_nary_expression_t<not_in_t, T...> not_in(T... t) const
|
||||||
|
// {
|
||||||
|
// check_rhs_in_arguments_t<ValueType, wrap_operand_t<T>...>::_();
|
||||||
|
// return {*static_cast<const Expr*>(this), wrap_operand_t<T>{t}...};
|
||||||
|
// }
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
typename _new_nary_expression<not_in_t, T...>::type not_in(T... t) const
|
typename _new_nary_expression<not_in_t, T...>::type not_in(T... t) const
|
||||||
{
|
{
|
||||||
|
@ -104,6 +104,19 @@ namespace sqlpp
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// workaround for msvs bug https://connect.microsoft.com/VisualStudio/feedback/details/2173053
|
||||||
|
// template <typename Context, typename... Args>
|
||||||
|
// struct serializer_t<Context, column_t<Args...>>
|
||||||
|
// {
|
||||||
|
// using _serialize_check = consistent_t;
|
||||||
|
// using T = column_t<Args...>;
|
||||||
|
//
|
||||||
|
// static Context& _(const T&, Context& context)
|
||||||
|
// {
|
||||||
|
// context << name_of<typename T::_table>::char_ptr() << '.' << name_of<T>::char_ptr();
|
||||||
|
// return context;
|
||||||
|
// }
|
||||||
|
// };
|
||||||
template <typename Context, typename Args1, typename Args2>
|
template <typename Context, typename Args1, typename Args2>
|
||||||
struct serializer_t<Context, column_t<Args1, Args2>>
|
struct serializer_t<Context, column_t<Args1, Args2>>
|
||||||
{
|
{
|
||||||
|
@ -123,6 +123,10 @@ namespace sqlpp
|
|||||||
template <typename AliasProvider, typename Statement>
|
template <typename AliasProvider, typename Statement>
|
||||||
using make_cte_t = typename make_cte_impl<AliasProvider, Statement, get_result_row_t<Statement>>::type;
|
using make_cte_t = typename make_cte_impl<AliasProvider, Statement, get_result_row_t<Statement>>::type;
|
||||||
|
|
||||||
|
// workaround for msvc unknown internal error
|
||||||
|
// template <typename AliasProvider, typename Statement, typename... FieldSpecs>
|
||||||
|
// struct cte_t
|
||||||
|
// : public member_t<cte_column_spec_t<FieldSpecs>, column_t<AliasProvider, cte_column_spec_t<FieldSpecs>>>...
|
||||||
template <typename AliasProvider, typename FieldSpec>
|
template <typename AliasProvider, typename FieldSpec>
|
||||||
struct cte_base
|
struct cte_base
|
||||||
{
|
{
|
||||||
@ -143,6 +147,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _column_tuple_t = std::tuple<column_t<AliasProvider, cte_column_spec_t<FieldSpecs>>...>;
|
using _column_tuple_t = std::tuple<column_t<AliasProvider, cte_column_spec_t<FieldSpecs>>...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2086629
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_statement_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_statement_t<T>::value...>{};
|
struct _check : logic::all_t<is_statement_t<T>::value...>{};
|
||||||
|
|
||||||
|
@ -45,6 +45,8 @@ namespace sqlpp
|
|||||||
|
|
||||||
struct _alias_t
|
struct _alias_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2100550
|
||||||
|
// static constexpr const char _literal[] = "like_";
|
||||||
static constexpr const char _literal[6] = "like_";
|
static constexpr const char _literal[6] = "like_";
|
||||||
using _name_t = sqlpp::make_char_sequence<sizeof(_literal), _literal>;
|
using _name_t = sqlpp::make_char_sequence<sizeof(_literal), _literal>;
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
@ -247,6 +247,7 @@ namespace sqlpp
|
|||||||
template <template <typename> class Transformation, typename T>
|
template <template <typename> class Transformation, typename T>
|
||||||
using transform_set_t = typename transform_set<Transformation, T>::type;
|
using transform_set_t = typename transform_set<Transformation, T>::type;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/feedback/details/2173198
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct make_name_of_set
|
struct make_name_of_set
|
||||||
{
|
{
|
||||||
|
@ -236,12 +236,14 @@ namespace sqlpp
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2086629
|
||||||
template <typename Expr>
|
template <typename Expr>
|
||||||
using lhs = detail::lhs_impl<Expr>;
|
using lhs = detail::lhs_impl<Expr>;
|
||||||
|
|
||||||
template <typename Expr>
|
template <typename Expr>
|
||||||
using lhs_t = typename detail::lhs_impl<Expr>::type;
|
using lhs_t = typename detail::lhs_impl<Expr>::type;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2086629
|
||||||
template <typename Expr>
|
template <typename Expr>
|
||||||
using rhs = detail::rhs_impl<Expr>;
|
using rhs = detail::rhs_impl<Expr>;
|
||||||
|
|
||||||
|
@ -63,6 +63,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -75,6 +76,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = extra_tables_data_t<Tables...>;
|
using _data_t = extra_tables_data_t<Tables...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : extra_tables{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : extra_tables{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -111,6 +113,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -123,6 +126,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_extra_tables{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_extra_tables{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -145,6 +149,9 @@ namespace sqlpp
|
|||||||
template <typename Check, typename T>
|
template <typename Check, typename T>
|
||||||
using _new_statement_t = new_statement_t<Check::value, Policies, no_extra_tables_t, T>;
|
using _new_statement_t = new_statement_t<Check::value, Policies, no_extra_tables_t, T>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_table_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_table_t<T>::value...>{};
|
struct _check : logic::all_t<is_table_t<T>::value...>{};
|
||||||
|
|
||||||
@ -171,6 +178,8 @@ namespace sqlpp
|
|||||||
|
|
||||||
static constexpr std::size_t _number_of_tables = detail::sum(provided_tables_of<Tables>::size::value...);
|
static constexpr std::size_t _number_of_tables = detail::sum(provided_tables_of<Tables>::size::value...);
|
||||||
using _unique_tables = detail::make_joined_set_t<provided_tables_of<Tables>...>;
|
using _unique_tables = detail::make_joined_set_t<provided_tables_of<Tables>...>;
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/feedback/details/2173198
|
||||||
|
// using _unique_table_names = detail::transform_set_t<name_of, _unique_tables>;
|
||||||
using _unique_table_names = detail::make_name_of_set_t<_unique_tables>;
|
using _unique_table_names = detail::make_name_of_set_t<_unique_tables>;
|
||||||
static_assert(_number_of_tables == _unique_tables::size::value,
|
static_assert(_number_of_tables == _unique_tables::size::value,
|
||||||
"at least one duplicate table detected in extra_tables()");
|
"at least one duplicate table detected in extra_tables()");
|
||||||
|
@ -71,6 +71,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -81,6 +82,8 @@ namespace sqlpp
|
|||||||
static_assert(is_table_t<Table>::value, "invalid table argument in from::add()");
|
static_assert(is_table_t<Table>::value, "invalid table argument in from::add()");
|
||||||
using _known_tables =
|
using _known_tables =
|
||||||
detail::make_joined_set_t<provided_tables_of<Tables>...>; // Hint: Joins contain more than one table
|
detail::make_joined_set_t<provided_tables_of<Tables>...>; // Hint: Joins contain more than one table
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/feedback/details/2173198
|
||||||
|
// using _known_table_names = detail::transform_set_t<name_of, _known_tables>;
|
||||||
using _known_table_names = detail::make_name_of_set_t<_known_tables>;
|
using _known_table_names = detail::make_name_of_set_t<_known_tables>;
|
||||||
static_assert(not detail::is_element_of<typename Table::_alias_t, _known_table_names>::value,
|
static_assert(not detail::is_element_of<typename Table::_alias_t, _known_table_names>::value,
|
||||||
"Must not use the same table name twice in from()");
|
"Must not use the same table name twice in from()");
|
||||||
@ -112,6 +115,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = from_data_t<Database, Tables...>;
|
using _data_t = from_data_t<Database, Tables...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : from{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : from{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -148,6 +152,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -160,6 +165,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_from{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_from{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -181,6 +187,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_table_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_table_t<T>::value...> {};
|
struct _check : logic::all_t<is_table_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -86,6 +86,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -130,6 +131,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = group_by_data_t<Database, Expressions...>;
|
using _data_t = group_by_data_t<Database, Expressions...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : group_by{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : group_by{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -168,6 +170,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -180,6 +183,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_group_by{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_group_by{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -201,6 +205,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_expression_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_expression_t<T>::value...> {};
|
struct _check : logic::all_t<is_expression_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -82,6 +82,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -126,6 +127,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = having_data_t<Database, Expressions...>;
|
using _data_t = having_data_t<Database, Expressions...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : having{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : having{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -164,6 +166,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -176,6 +179,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_having{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_having{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -197,6 +201,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_expression_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_expression_t<T>::value...> {};
|
struct _check : logic::all_t<is_expression_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -90,6 +91,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = insert_default_values_data_t;
|
using _data_t = insert_default_values_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : default_values{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : default_values{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -148,6 +150,17 @@ namespace sqlpp
|
|||||||
SQLPP_PORTABLE_STATIC_ASSERT(assert_insert_dynamic_set_statement_dynamic_t,
|
SQLPP_PORTABLE_STATIC_ASSERT(assert_insert_dynamic_set_statement_dynamic_t,
|
||||||
"dynamic_set must not be called in a static statement");
|
"dynamic_set must not be called in a static statement");
|
||||||
|
|
||||||
|
// workaround for msvc bugs https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269 & https://connect.microsoft.com/VisualStudio/Feedback/Details/2173198
|
||||||
|
// template <typename... Assignments>
|
||||||
|
// using check_insert_set_t = static_combined_check_t<
|
||||||
|
// static_check_t<logic::all_t<is_assignment_t<Assignments>::value...>::value, assert_insert_set_assignments_t>,
|
||||||
|
// static_check_t<not detail::has_duplicates<lhs_t<Assignments>...>::value, assert_insert_set_no_duplicates_t>,
|
||||||
|
// static_check_t<logic::none_t<must_not_insert_t<lhs_t<Assignments>>::value...>::value,
|
||||||
|
// assert_insert_set_prohibited_t>,
|
||||||
|
// static_check_t<sizeof...(Assignments) == 0 or
|
||||||
|
// detail::make_joined_set_t<required_tables_of<lhs_t<Assignments>>...>::size::value == 1,
|
||||||
|
// assert_insert_set_one_table_t>>;
|
||||||
|
|
||||||
template <typename Expr>
|
template <typename Expr>
|
||||||
struct must_not_insert
|
struct must_not_insert
|
||||||
{
|
{
|
||||||
@ -164,6 +177,13 @@ namespace sqlpp
|
|||||||
detail::make_joined_set_t<required_tables_of<typename lhs<Assignments>::type>...>::size::value == 1,
|
detail::make_joined_set_t<required_tables_of<typename lhs<Assignments>::type>...>::size::value == 1,
|
||||||
assert_insert_set_one_table_t>>;
|
assert_insert_set_one_table_t>>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... Assignments>
|
||||||
|
// using check_insert_static_set_t =
|
||||||
|
// static_combined_check_t<check_insert_set_t<Assignments...>,
|
||||||
|
// static_check_t<sizeof...(Assignments) != 0, assert_insert_static_set_count_args_t>,
|
||||||
|
// static_check_t<detail::have_all_required_columns<lhs_t<Assignments>...>::value,
|
||||||
|
// assert_insert_static_set_all_required_t>>;
|
||||||
template <typename... Assignments>
|
template <typename... Assignments>
|
||||||
struct check_insert_static_set
|
struct check_insert_static_set
|
||||||
{
|
{
|
||||||
@ -176,6 +196,11 @@ namespace sqlpp
|
|||||||
template <typename... Assignments>
|
template <typename... Assignments>
|
||||||
using check_insert_static_set_t = typename check_insert_static_set<Assignments...>::type;
|
using check_insert_static_set_t = typename check_insert_static_set<Assignments...>::type;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename Database, typename... Assignments>
|
||||||
|
// using check_insert_dynamic_set_t = static_combined_check_t<
|
||||||
|
// static_check_t<not std::is_same<Database, void>::value, assert_insert_dynamic_set_statement_dynamic_t>,
|
||||||
|
// check_insert_set_t<Assignments...>>;
|
||||||
template <typename Database, typename... Assignments>
|
template <typename Database, typename... Assignments>
|
||||||
struct check_insert_dynamic_set
|
struct check_insert_dynamic_set
|
||||||
{
|
{
|
||||||
@ -211,6 +236,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -260,6 +286,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = insert_list_data_t<Database, Assignments...>;
|
using _data_t = insert_list_data_t<Database, Assignments...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : insert_list{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : insert_list{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -288,6 +315,7 @@ namespace sqlpp
|
|||||||
template <typename... Columns>
|
template <typename... Columns>
|
||||||
struct column_list_data_t
|
struct column_list_data_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
column_list_data_t(Columns... cols) : _columns(simple_column_t<Columns>(cols)...)
|
column_list_data_t(Columns... cols) : _columns(simple_column_t<Columns>(cols)...)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -330,6 +358,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -367,6 +396,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = column_list_data_t<Columns...>;
|
using _data_t = column_list_data_t<Columns...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : values{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : values{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -416,6 +446,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -428,6 +459,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_insert_values{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_insert_values{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -449,6 +481,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _column_check = logic::all_t<is_column_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _column_check : logic::all_t<is_column_t<T>::value...> {};
|
struct _column_check : logic::all_t<is_column_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -83,6 +84,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = into_data_t<Database, Table>;
|
using _data_t = into_data_t<Database, Table>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : into{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : into{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -76,6 +77,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = limit_data_t<Limit>;
|
using _data_t = limit_data_t<Limit>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : limit{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : limit{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -137,6 +139,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -160,6 +163,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = dynamic_limit_data_t<Database>;
|
using _data_t = dynamic_limit_data_t<Database>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : limit{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : limit{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -195,6 +199,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -207,6 +212,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_limit{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_limit{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
|
@ -38,6 +38,8 @@ namespace sqlpp
|
|||||||
struct logic_helper;
|
struct logic_helper;
|
||||||
|
|
||||||
// see http://lists.boost.org/Archives/boost/2014/05/212946.php :-)
|
// see http://lists.boost.org/Archives/boost/2014/05/212946.php :-)
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2086629
|
||||||
template <bool... B>
|
template <bool... B>
|
||||||
struct all
|
struct all
|
||||||
{
|
{
|
||||||
@ -47,6 +49,7 @@ namespace sqlpp
|
|||||||
template <bool... B>
|
template <bool... B>
|
||||||
using all_t = std::is_same<logic_helper<B...>, logic_helper<(B or true)...>>;
|
using all_t = std::is_same<logic_helper<B...>, logic_helper<(B or true)...>>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2086629
|
||||||
template <bool... B>
|
template <bool... B>
|
||||||
struct any
|
struct any
|
||||||
{
|
{
|
||||||
|
@ -66,6 +66,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -78,6 +79,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = offset_data_t<Offset>;
|
using _data_t = offset_data_t<Offset>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : offset{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : offset{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -139,6 +141,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -162,6 +165,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = dynamic_offset_data_t<Database>;
|
using _data_t = dynamic_offset_data_t<Database>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : offset{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : offset{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -209,6 +213,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -221,6 +226,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_offset{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_offset{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
|
@ -83,6 +83,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -127,6 +128,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = order_by_data_t<Database, Expressions...>;
|
using _data_t = order_by_data_t<Database, Expressions...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : order_by{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : order_by{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -165,6 +167,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -177,6 +180,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2091069
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_order_by{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_order_by{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -198,6 +202,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_sort_order_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_sort_order_t<T>::value...> {};
|
struct _check : logic::all_t<is_sort_order_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -201,6 +201,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -251,6 +252,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = select_column_list_data_t<Database, Columns...>;
|
using _data_t = select_column_list_data_t<Database, Columns...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : selected_columns{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : selected_columns{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -403,6 +405,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -415,6 +418,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_selected_columns{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_selected_columns{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -436,6 +440,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<(is_selectable_t<T>::value or is_multi_column_t<T>::value)...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<(is_selectable_t<T>::value or is_multi_column_t<T>::value)...> {};
|
struct _check : logic::all_t<(is_selectable_t<T>::value or is_multi_column_t<T>::value)...> {};
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -115,6 +116,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = select_flag_list_data_t<Database, Flags...>;
|
using _data_t = select_flag_list_data_t<Database, Flags...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : select_flags{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : select_flags{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -150,6 +152,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -162,6 +165,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_select_flags{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_select_flags{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -183,6 +187,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_select_flag_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<detail::is_select_flag_impl<T>::type::value...>{};
|
struct _check : logic::all_t<detail::is_select_flag_impl<T>::type::value...>{};
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ namespace sqlpp
|
|||||||
using _column_t = Column;
|
using _column_t = Column;
|
||||||
_column_t _column;
|
_column_t _column;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
simple_column_t() = default;
|
simple_column_t() = default;
|
||||||
simple_column_t(const _column_t &column) : _column{column} {}
|
simple_column_t(const _column_t &column) : _column{column} {}
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -85,6 +86,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = single_table_data_t<Database, Table>;
|
using _data_t = single_table_data_t<Database, Table>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : from{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : from{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
|
@ -110,6 +110,11 @@ namespace sqlpp
|
|||||||
template <typename Expression>
|
template <typename Expression>
|
||||||
using _no_unknown_tables = detail::is_subset_of<required_tables_of<Expression>, _known_tables>;
|
using _no_unknown_tables = detail::is_subset_of<required_tables_of<Expression>, _known_tables>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2086629
|
||||||
|
// template <typename... Expressions>
|
||||||
|
// using _no_unknown_aggregates =
|
||||||
|
// logic::any_t<_all_provided_aggregates::size::value == 0,
|
||||||
|
// logic::all_t<is_aggregate_expression_t<_all_provided_aggregates, Expressions>::value...>::value>;
|
||||||
template <typename... Expressions>
|
template <typename... Expressions>
|
||||||
using _no_unknown_aggregates =
|
using _no_unknown_aggregates =
|
||||||
logic::any_t<_all_provided_aggregates::size::value == 0,
|
logic::any_t<_all_provided_aggregates::size::value == 0,
|
||||||
@ -219,6 +224,13 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename Statement, typename Term>
|
||||||
|
// statement_t(Statement statement, Term term)
|
||||||
|
// : Policies::template _base_t<_policies_t>{typename Policies::template _impl_t<_policies_t>{
|
||||||
|
// detail::pick_arg<typename Policies::template _base_t<_policies_t>>(statement, term)}}...
|
||||||
|
// {
|
||||||
|
// }
|
||||||
template <typename Statement, typename Term>
|
template <typename Statement, typename Term>
|
||||||
statement_t(Statement statement, Term term)
|
statement_t(Statement statement, Term term)
|
||||||
: Policies::template _base_t<_policies_t>(typename Policies::template _impl_t<_policies_t>(
|
: Policies::template _base_t<_policies_t>(typename Policies::template _impl_t<_policies_t>(
|
||||||
@ -291,6 +303,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data) {}
|
_impl_t(const _data_t &data) : _data(data) {}
|
||||||
|
|
||||||
@ -303,6 +316,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = NameData;
|
using _data_t = NameData;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : statement_name{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : statement_name{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
|
@ -41,6 +41,9 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173198
|
||||||
|
// template <typename Table, typename... ColumnSpec>
|
||||||
|
// struct table_t : public table_base_t, public member_t<ColumnSpec, column_t<Table, ColumnSpec>>...
|
||||||
template <typename Table, typename... ColumnSpec>
|
template <typename Table, typename... ColumnSpec>
|
||||||
struct table_t : public table_base_t, public ColumnSpec::_alias_t::template _member_t<column_t<Table, ColumnSpec>>...
|
struct table_t : public table_base_t, public ColumnSpec::_alias_t::template _member_t<column_t<Table, ColumnSpec>>...
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,9 @@
|
|||||||
|
|
||||||
namespace sqlpp
|
namespace sqlpp
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173198
|
||||||
|
// template <typename AliasProvider, typename Table, typename... ColumnSpec>
|
||||||
|
// struct table_alias_t : public member_t<ColumnSpec, column_t<AliasProvider, ColumnSpec>>...
|
||||||
template <typename AliasProvider, typename Table, typename... ColumnSpec>
|
template <typename AliasProvider, typename Table, typename... ColumnSpec>
|
||||||
struct table_alias_t : public ColumnSpec::_alias_t::template _member_t<column_t<AliasProvider, ColumnSpec>>...
|
struct table_alias_t : public ColumnSpec::_alias_t::template _member_t<column_t<AliasProvider, ColumnSpec>>...
|
||||||
{
|
{
|
||||||
|
@ -78,6 +78,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -90,6 +91,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = union_data_t<Database, Flag, Lhs, Rhs>;
|
using _data_t = union_data_t<Database, Flag, Lhs, Rhs>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : union_{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : union_{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -142,6 +144,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -154,6 +157,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_union{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_union{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -175,6 +179,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_statement_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
using _check = typename logic::all<is_statement_t<T>::value...>::type;
|
using _check = typename logic::all<is_statement_t<T>::value...>::type;
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -127,6 +128,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = update_list_data_t<Database, Assignments...>;
|
using _data_t = update_list_data_t<Database, Assignments...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : assignments{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : assignments{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -175,6 +177,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -187,6 +190,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_assignments{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_assignments{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -208,6 +212,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_assignment_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : public logic::all_t<is_assignment_t<T>::value...> {};
|
struct _check : public logic::all_t<is_assignment_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -105,6 +106,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = using_data_t<Database, Tables...>;
|
using _data_t = using_data_t<Database, Tables...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : using_{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : using_{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -142,6 +144,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -154,6 +157,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_using{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_using{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -175,6 +179,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_table_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_table_t<T>::value...> {};
|
struct _check : logic::all_t<is_table_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data) {}
|
_impl_t(const _data_t &data) : _data(data) {}
|
||||||
|
|
||||||
@ -128,6 +129,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = where_data_t<Database, Expressions...>;
|
using _data_t = where_data_t<Database, Expressions...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : where{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : where{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -173,6 +175,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -185,6 +188,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = where_data_t<void, bool>;
|
using _data_t = where_data_t<void, bool>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : where{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : where{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -233,6 +237,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -245,6 +250,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_where{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_where{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -266,6 +272,9 @@ namespace sqlpp
|
|||||||
|
|
||||||
using _database_t = typename Policies::_database_t;
|
using _database_t = typename Policies::_database_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
|
// template <typename... T>
|
||||||
|
// using _check = logic::all_t<is_expression_t<T>::value...>;
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
struct _check : logic::all_t<is_expression_t<T>::value...> {};
|
struct _check : logic::all_t<is_expression_t<T>::value...> {};
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -91,6 +92,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = with_data_t<Database, Expressions...>;
|
using _data_t = with_data_t<Database, Expressions...>;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : with{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : with{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
@ -127,6 +129,7 @@ namespace sqlpp
|
|||||||
template <typename Policies>
|
template <typename Policies>
|
||||||
struct _impl_t
|
struct _impl_t
|
||||||
{
|
{
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
_impl_t() = default;
|
_impl_t() = default;
|
||||||
_impl_t(const _data_t &data) : _data(data){}
|
_impl_t(const _data_t &data) : _data(data){}
|
||||||
|
|
||||||
@ -139,6 +142,7 @@ namespace sqlpp
|
|||||||
{
|
{
|
||||||
using _data_t = no_data_t;
|
using _data_t = no_data_t;
|
||||||
|
|
||||||
|
// workaround for msvc bug https://connect.microsoft.com/VisualStudio/Feedback/Details/2173269
|
||||||
template<typename ...Args>
|
template<typename ...Args>
|
||||||
_base_t(Args&& ...args) : no_with{std::forward<Args>(args)...} {}
|
_base_t(Args&& ...args) : no_with{std::forward<Args>(args)...} {}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user