Hmm, I think that in most cases, you can solve this problem by declaring the function template before or after the class definition, and putting the default argument there rather than in the friend declaration. (Though one can certainly think of rare situations where this would not do.)

On Wed, Aug 28, 2019 at 12:24 PM Vladimir Grigoriev via Std-Discussion <std-discussion@lists.isocpp.org> wrote:
In the C++ 20 Standard (13.1 Template parameters) there is written

11. .... If a friend function template declaration specifies a default template-argument, that declaration shall be a definition and shall be the only declaration of the function template in the translation unit.

So what to do in this case when an explicit specialization of the function is required? The name of the template is not visible outside the class where it is defined.

With best regards,
Vlad from Moscow

You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or http://ru.stackoverflow.com
--
Std-Discussion mailing list
Std-Discussion@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion


--
Brian Bi