From 8b37626b89abef7d9415f7a877c84244672ed7c8 Mon Sep 17 00:00:00 2001 From: rbock Date: Sun, 16 Feb 2014 12:41:59 +0100 Subject: [PATCH] Added uniqueness constraint to type_set, plus minor cleanup --- include/sqlpp11/detail/type_set.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/include/sqlpp11/detail/type_set.h b/include/sqlpp11/detail/type_set.h index e9b8d6e5..53450cbe 100644 --- a/include/sqlpp11/detail/type_set.h +++ b/include/sqlpp11/detail/type_set.h @@ -41,19 +41,20 @@ namespace sqlpp struct make_set; // A type set - template + template struct type_set { - using _elements_t = std::tuple; - using size = std::tuple_size<_elements_t>; + using size = std::integral_constant; using _is_type_set = std::true_type; + static_assert(std::is_same::type>::value, "use make_set to construct a set"); + template struct count { template using same = std::is_same; - static constexpr bool value = or_t::value; + static constexpr bool value = or_t::value; }; template @@ -77,7 +78,7 @@ namespace sqlpp template struct join> { - using type = typename make_set::type; + using type = typename make_set::type; }; template @@ -101,7 +102,7 @@ namespace sqlpp template struct is_disjunct_from> { - static constexpr bool value = not(or_t::value or or_t::template count, Element...>::value); + static constexpr bool value = not(or_t::value or or_t::template count, Elements...>::value); }; template @@ -109,14 +110,14 @@ namespace sqlpp { using type = typename std::conditional::value, type_set, - type_set>::type; + type_set>::type; }; template class Predicate, typename T> struct insert_if { using type = typename std::conditional::value, - type_set, + type_set, type_set>::type; }; };