#pragma once #include "order_by.h" #include "order_by/order_direction.h" namespace cpphibernate { namespace __impl { /* order_by_t */ template struct order_by_t : public tag_modifier , public tag_equality_comparable { using order_directions_type = hana::basic_tuple; order_directions_type order_directions; }; /* order_by_builder */ template struct order_by_builder { template static constexpr decltype(auto) apply(T_args&&...) { static_assert(sizeof...(T_args) == -1, "Invalid parameters for order_by(...)!"); } }; template struct order_by_builder< mp::list, mp::enable_if_t>...>>> { static constexpr decltype(auto) apply(T_order_directions&&...) { using order_by_type = order_by_t...>; return order_by_type { }; } }; } /* is_order_by_modifier */ template struct is_order_by_modifier : public mp::is_specialization_of { }; }