C ++ 11: ¿Cómo alias una función?
Si tengo una clase Foo en la barra de espacio de nombres:
namespace bar
{
class Foo { ... }
};
Puedo entonces:
using Baz = bar::Foo;
y ahora es como definí la clase en mi espacio de nombres con el nombre Baz.
¿Es posible hacer lo mismo para las funciones?
namespace bar
{
void f();
}
Y entonces
using g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type
¿Cuál es la forma más limpia de hacer esto?
La solución también debería ser válida para las funciones de plantilla.
Definición Si alguna entidad B es unaalia de A, que si alguno o todos los usos (no declaraciones o definiciones, por supuesto) de A se reemplazan por B en el código fuente, entonces el código generado (eliminado) sigue siendo el mismo. Por ejemplotypedef A B
es un alias. @#define B A
es un alias (al menos). @T& B = A
no es un alias, B puede implementarse efectivamente como un puntero indirecto, mientras que un "sin alias" A puede usar "semántica inmediata".