@@ -844,114 +844,116 @@ namespace sqlite_orm {
844844 // Intentionally place operators for types classified as arithmetic or general operator arguments in the internal namespace
845845 // to facilitate ADL (Argument Dependent Lookup)
846846 namespace internal {
847- template <class T ,
848- std::enable_if_t <polyfill::disjunction_v<std::is_base_of<negatable_t , T>, is_operator_argument<T>>,
849- bool > = true >
847+ template <
848+ class T ,
849+ std::enable_if_t <polyfill::disjunction<std::is_base_of<negatable_t , T>, is_operator_argument<T>>::value,
850+ bool > = true >
850851 negated_condition_t <T> operator !(T arg) {
851852 return {std::move (arg)};
852853 }
853854
854855 template <class L ,
855856 class R ,
856- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<arithmetic_t , L>,
857- std::is_base_of<arithmetic_t , R>,
858- is_operator_argument<L>,
859- is_operator_argument<R>>,
857+ std::enable_if_t <polyfill::disjunction <std::is_base_of<arithmetic_t , L>,
858+ std::is_base_of<arithmetic_t , R>,
859+ is_operator_argument<L>,
860+ is_operator_argument<R>>::value ,
860861 bool > = true >
861862 less_than_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator <(L l, R r) {
862863 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
863864 }
864865
865866 template <class L ,
866867 class R ,
867- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<arithmetic_t , L>,
868- std::is_base_of<arithmetic_t , R>,
869- is_operator_argument<L>,
870- is_operator_argument<R>>,
868+ std::enable_if_t <polyfill::disjunction <std::is_base_of<arithmetic_t , L>,
869+ std::is_base_of<arithmetic_t , R>,
870+ is_operator_argument<L>,
871+ is_operator_argument<R>>::value ,
871872 bool > = true >
872873 less_or_equal_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator <=(L l, R r) {
873874 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
874875 }
875876
876877 template <class L ,
877878 class R ,
878- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<arithmetic_t , L>,
879- std::is_base_of<arithmetic_t , R>,
880- is_operator_argument<L>,
881- is_operator_argument<R>>,
879+ std::enable_if_t <polyfill::disjunction <std::is_base_of<arithmetic_t , L>,
880+ std::is_base_of<arithmetic_t , R>,
881+ is_operator_argument<L>,
882+ is_operator_argument<R>>::value ,
882883 bool > = true >
883884 greater_than_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator >(L l, R r) {
884885 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
885886 }
886887
887888 template <class L ,
888889 class R ,
889- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<arithmetic_t , L>,
890- std::is_base_of<arithmetic_t , R>,
891- is_operator_argument<L>,
892- is_operator_argument<R>>,
890+ std::enable_if_t <polyfill::disjunction <std::is_base_of<arithmetic_t , L>,
891+ std::is_base_of<arithmetic_t , R>,
892+ is_operator_argument<L>,
893+ is_operator_argument<R>>::value ,
893894 bool > = true >
894895 greater_or_equal_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator >=(L l, R r) {
895896 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
896897 }
897898
898899 template <class L ,
899900 class R ,
900- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<arithmetic_t , L>,
901- std::is_base_of<arithmetic_t , R>,
902- std::is_base_of<condition_t , L>,
903- std::is_base_of<condition_t , R>,
904- is_operator_argument<L>,
905- is_operator_argument<R>>,
901+ std::enable_if_t <polyfill::disjunction <std::is_base_of<arithmetic_t , L>,
902+ std::is_base_of<arithmetic_t , R>,
903+ std::is_base_of<condition_t , L>,
904+ std::is_base_of<condition_t , R>,
905+ is_operator_argument<L>,
906+ is_operator_argument<R>>::value ,
906907 bool > = true >
907908 is_equal_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator ==(L l, R r) {
908909 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
909910 }
910911
911912 template <class L ,
912913 class R ,
913- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<arithmetic_t , L>,
914- std::is_base_of<arithmetic_t , R>,
915- std::is_base_of<condition_t , L>,
916- std::is_base_of<condition_t , R>,
917- is_operator_argument<L>,
918- is_operator_argument<R>>,
914+ std::enable_if_t <polyfill::disjunction <std::is_base_of<arithmetic_t , L>,
915+ std::is_base_of<arithmetic_t , R>,
916+ std::is_base_of<condition_t , L>,
917+ std::is_base_of<condition_t , R>,
918+ is_operator_argument<L>,
919+ is_operator_argument<R>>::value ,
919920 bool > = true >
920921 is_not_equal_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator !=(L l, R r) {
921922 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
922923 }
923924
924925 template <class L ,
925926 class R ,
926- std::enable_if_t <polyfill::disjunction_v <std::is_base_of<condition_t , L>,
927- std::is_base_of<condition_t , R>,
928- is_operator_argument<L>,
929- is_operator_argument<R>>,
927+ std::enable_if_t <polyfill::disjunction <std::is_base_of<condition_t , L>,
928+ std::is_base_of<condition_t , R>,
929+ is_operator_argument<L>,
930+ is_operator_argument<R>>::value ,
930931 bool > = true >
931932 and_condition_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator &&(L l, R r) {
932933 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
933934 }
934935
935- template <
936- class L ,
937- class R ,
938- std:: enable_if_t < polyfill::disjunction_v <std::is_base_of<condition_t , L>, std::is_base_of<condition_t , R>>,
939- bool > = true >
936+ template <class L ,
937+ class R ,
938+ std:: enable_if_t <
939+ polyfill::disjunction <std::is_base_of<condition_t , L>, std::is_base_of<condition_t , R>>::value ,
940+ bool > = true >
940941 or_condition_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator ||(L l, R r) {
941942 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
942943 }
943944
944- template <class L ,
945- class R ,
946- std::enable_if_t <polyfill::conjunction_v<
947- polyfill::disjunction<std::is_base_of<conc_string, L>,
948- std::is_base_of<conc_string, R>,
949- is_operator_argument<L>,
950- is_operator_argument<R>>,
951- // exclude conditions
952- polyfill::negation<polyfill::disjunction<std::is_base_of<condition_t , L>,
953- std::is_base_of<condition_t , R>>>>,
954- bool > = true >
945+ template <
946+ class L ,
947+ class R ,
948+ std::enable_if_t <polyfill::conjunction<
949+ polyfill::disjunction<std::is_base_of<conc_string, L>,
950+ std::is_base_of<conc_string, R>,
951+ is_operator_argument<L>,
952+ is_operator_argument<R>>,
953+ // exclude conditions
954+ polyfill::negation<polyfill::disjunction<std::is_base_of<condition_t , L>,
955+ std::is_base_of<condition_t , R>>>>::value,
956+ bool > = true >
955957 conc_t <unwrap_expression_t <L>, unwrap_expression_t <R>> operator ||(L l, R r) {
956958 return {get_from_expression (std::forward<L>(l)), get_from_expression (std::forward<R>(r))};
957959 }
0 commit comments