The syntaxes are way different:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0847r4.html
In your case the compiler will have to change all of its rules for the number of parameters "operator" overloads. For example:
struct A
{
int value;
...
template <typename Self>
bool operator < (this Self && self, A const
& a) // 2 parameters... ok
{
return self.value < a.value;
}
bool operator < (A const & a) // 1 parameter... ok
{
return value < a.value;
}
};
--
Phil Bouchard
Founder
C.: (819) 328-4743

P0847
On Sat, Mar 7, 2020, 18:33 Phil Bouchard via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
--Alright, I'm pretty sure this is not implemented yet. Suppose you have:
struct A
{
int value;
...
template <typename T>
int compare(T const & t) const;
}
struct B
{
int value;
...
template <typename T>
int compare(T const & t) const;
}
Then a generic way to define the same functionality for all classes would be to have a "template 'this'":
template <typename C, typename T>
inline int C::compare(T const & t) const
{
return value == t.value ? 0 : value < t.value ? -1 : 1;
}
(Please include my email address in your replies)
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals