Named operators in C++
I would add rvalue reference support with moving of temporaries.

&lt;op&gt; seems to be too low precidence to be practical - you end up having to (bracket) everything (as demonstrated above).  % at least binds tightly.

I do like a &lt;op&gt;= b.  Better than my a +op= b.

Forwarding operator() from the operator to the function lets you forget the function behind the operator entirely:  in(3, vec) -- very Haskell.

N ary infix operators that defer application of f allow s &lt;append&gt; s2 &lt;append&gt; s3 to run as efficiently as possible.  But doing that cleanly might be hard.

Not sure what inline is intended to do above.

For an interesting test case, implement (std::future&lt;T&gt; %then% [](T)-&gt;U)-&gt;std::future&lt;U&gt; (where that lambda is a placeholder for a functor)

Block some copy and move ctors to prevent persistance, and friend the approriate operators.

As noted, I allowed arbitrary binary operators (chosen when you make_infix) to bracket the named operator: the precidence of the resulting named operator exactly matches the bracketing operators.  So +append+ has precidence of + and *in* has precidence of *.  Of the 3 first use cases (lin alg, container append, then) for two of them the named operators where variants of existing operators, and matching their precidence seemed useful.