An auto ref function template should behave like a normal function template, but it doesn't.

You can fully instantiate a function template by specifying all of its template parameters, but you can't do that with auto ref templates. The only way to instantiate an auto ref template is to call it.

This makes auto ref an outlier. Because you get a function by instantiate function template, you can pass the result as template alias argument, and you can create alias of the resulting function. And you can't do that with an auto ref template, which makes them quite annoying.

I wonder why is auto ref designed this way? And can we change this?

Reply via email to