]> git.tdb.fi Git - libs/core.git/commitdiff
Partially revert "Use braced initializer lists ..."
authorMikko Rasa <tdb@tdb.fi>
Tue, 20 Dec 2022 23:31:12 +0000 (01:31 +0200)
committerMikko Rasa <tdb@tdb.fi>
Tue, 20 Dec 2022 23:31:12 +0000 (01:31 +0200)
Turns out you can't omit initializers with some members, and
MemberCompare has the predicate as a member.

source/core/algorithm.h

index 30ca267bfe73435bd2bf2e995e781f3d083a7ca4..43bbaeeb2c00ace3199beae6b1af8052cd0bfb51 100644 (file)
@@ -143,6 +143,8 @@ struct MemberCompare
        T C::*mem_ptr;
        P pred;
 
+       MemberCompare(T C::*p): mem_ptr(p) { }
+
        bool operator()(const C &obj, const T &v) { return pred(obj.*mem_ptr, v); }
        bool operator()(const T &v, const C &obj) { return pred(v, obj.*mem_ptr); }
        bool operator()(const C &obj1, const C &obj2) { return pred(obj1.*mem_ptr, obj2.*mem_ptr); }
@@ -151,37 +153,37 @@ struct MemberCompare
 template<typename Container, typename T>
 inline typename Container::iterator lower_bound_member(Container &cont, const T &value, T Container::value_type::*mp)
 {
-       return lower_bound(cont, value, MemberCompare<typename Container::value_type, T>{ mp });
+       return lower_bound(cont, value, MemberCompare<typename Container::value_type, T>(mp));
 }
 
 template<typename Container, typename T>
 inline typename Container::const_iterator lower_bound_member(const Container &cont, const T &value, T Container::value_type::*mp)
 {
-       return lower_bound(cont, value, MemberCompare<typename Container::value_type, T>{ mp });
+       return lower_bound(cont, value, MemberCompare<typename Container::value_type, T>(mp));
 }
 
 template<typename Container, typename T>
 inline typename Container::iterator upper_bound_member(Container &cont, const T &value, T Container::value_type::*mp)
 {
-       return upper_bound(cont, value, MemberCompare<typename Container::value_type, T>{ mp });
+       return upper_bound(cont, value, MemberCompare<typename Container::value_type, T>(mp));
 }
 
 template<typename Container, typename T>
 inline typename Container::const_iterator upper_bound_member(const Container &cont, const T &value, T Container::value_type::*mp)
 {
-       return upper_bound(cont, value, MemberCompare<typename Container::value_type, T>{ mp });
+       return upper_bound(cont, value, MemberCompare<typename Container::value_type, T>(mp));
 }
 
 template<typename Container, typename T>
 inline void sort_member(Container &cont, T Container::value_type::*mp)
 {
-       sort(cont, MemberCompare<typename Container::value_type, T>{ mp });
+       sort(cont, MemberCompare<typename Container::value_type, T>(mp));
 }
 
 template<typename Container, typename T>
 inline void stable_sort_member(Container &cont, T Container::value_type::*mp)
 {
-       stable_sort(cont, MemberCompare<typename Container::value_type, T>{ mp });
+       stable_sort(cont, MemberCompare<typename Container::value_type, T>(mp));
 }
 
 template<typename Container, typename Predicate>