0
0
mirror of https://github.com/rbock/sqlpp11.git synced 2024-11-16 12:51:13 +08:00

Fix variadic template pack expansion failure with VS2017 RC

This commit is contained in:
Frank Park 2017-02-20 19:00:32 -05:00
parent 4d22202fe5
commit 306969488b
2 changed files with 6 additions and 2 deletions

View File

@ -237,7 +237,7 @@ namespace sqlpp
// template <typename... T> // template <typename... T>
// using _check = logic::all_t<is_expression_t<T>::value...>; // 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...>...
{ {
}; };

View File

@ -121,8 +121,12 @@ namespace sqlpp
_required_ctes::size::value == 0; _required_ctes::size::value == 0;
} }
// work around for msvc bug:
// error C3520 : 'Policies' : parameter pack must be expanded in this context
using is_missing_policies_t_1 = logic::logic_helper<is_missing_t<Policies>::value...>;
using is_missing_policies_t_2 = logic::logic_helper<(is_missing_t<Policies>::value && false)...>;
using _value_type = using _value_type =
typename std::conditional<logic::none_t<is_missing_t<Policies>::value...>::value, typename std::conditional<std::is_same<is_missing_policies_t_1, is_missing_policies_t_2>::value,
value_type_of<_result_type_provider>, value_type_of<_result_type_provider>,
no_value_t // if a required statement part is missing (e.g. columns in a select), no_value_t // if a required statement part is missing (e.g. columns in a select),
// then the statement cannot be used as a value // then the statement cannot be used as a value