For functions and function templates, in C++, there are no proper aliases in the sense of the alias name immediately referring to the same entity as it aliases.
The closest thing is a function reference, which also only applies to individual specializations and still behaves like a reference, not an alias. Also, taking a pointer or reference to a standard library function has unspecified behavior in order to allow the implementation to modify the overload set. Only direct calls are generally specified.
Practically speaking implementing as
as a new (set of) function templates that forward to std::get
in their body is the best approach. The behavior of as
can be made to be identical to that of std::get
by copying all of std::get
's specified signatures.
Also, it is generally impossible to alias templates. Type alias templates (template</*...*/> using MyAlias = /*...*/;
) do not alias a class template with a new name. They are instead themselves separate templates and each specialization of that template is a single alias for a specific type.