Is "arg" an universal/forwarding-reference or an rvalue-reference?
template<auto&& arg>
struct test {};
It is a forwarding (aka universal) reference.
It's easy to check:
// (This needs to be at namespace scope, addresses local variables can't
// be passed to reference or pointer template arguments.).
int x;
test<x> t;
This compiles despite x
being an lvalue.
As noted by @user12002570, the standard apparently has a very narrow definition of a "forwarding reference" that only applies to function parameters, which means this technically isn't one (@Brian Bi's answer discusses this in more detail). But I'd argue the choice of words is lowkey defective, this isn't the definition that people usually use.
Usually people say "a forwarding reference" to indicate that a seemingly rvalue reference can become an lvalue reference if given an lvalue, and the answer in this case is yes.