[Please CC my personal email address in the replies otherwise I'll can't properly follow-up]
So let's take a better example:
template <typename T>
struct construct<T>{
// Let the compiler generate the most efficient code
template <qualifier Q>
inline T Q operator () (node_proxy & __y, T Q po)
{
return T(po);}
};struct ConstClass
{
constexpr ConstClass() {}
};
struct NonConstClass
{
NonConstClass() {}
};
// This will result in:
construct<ConstClass>()(ConstClass()); // constexpr
expression
construct<NonConstClass>()(NonConstClass()); // not a
constexpr expression
Thus qualifiers would be:
<nothing> (copy)
const
volatile
const volatile
const &
volatile &
const volatile &
<nothing> (copy) constexprconst constexpr
volatile constexpr
const volatile constexpr
const constexpr &
volatile constexpr &
const volatile constexpr &
&&
Why the need? Because otherwise we can't have unique and
syntactic sugar functions to handle all possibilities efficiently.
--
Phil Bouchard
Founder
C.: (819) 328-4743

Is there some reason to use assignment as your example? It seems a strange example, since we don't normally assign to const objects, nor build assignments that don't assign.
Maybe a more motivating and less distracting example would be better.
Sent from my BlackBerry portable Babbage Device
From: Phil Bouchard via Std-ProposalsSent: Sunday, September 29, 2019 8:52 AMReply To: std-proposals@lists.isocpp.orgCc: Phil BouchardSubject: [std-proposals] Template qualifiers
Greetings,
How many time did we have to redundantly write the same member functions just to add a const version? Ex.:
struct A
{
A & operator = (A const &) { return * this; }
A const & operator = (A const &) const { return * this; }
};
What I would like to suggest would be to templatize those instances as such:
struct A
{
template <qualifier Q>
A Q & operator = (A const &) Q { return * this; }
};
This would in instantiate on-the-fly the 2 (or 4) versions of the same code.
Thank you,