GNU/Linux >> Tutoriales Linux >  >> Linux

C++ 11:¿Cómo crear un alias de una función?

Puede definir un alias de función (con algo de trabajo) utilizando el reenvío perfecto:

template <typename... Args>
auto g(Args&&... args) -> decltype(f(std::forward<Args>(args)...)) {
  return f(std::forward<Args>(args)...);
}

Esta solución se aplica incluso si f está sobrecargado y/o es una plantilla de función.


El constexpr el puntero de función se puede usar como un alias de función.

namespace bar
{
    int f();
}

constexpr auto g = bar::f;

Es muy probable (pero no está garantizado por el idioma) que usar g usa bar::f directamente. Específicamente, esto depende de la versión del compilador y el nivel de optimización.

En particular, este es el caso de:

  • GCC 4.7.1+, sin optimización,
  • Clang 3.1+, sin optimización,
  • MSVC 19.14+, con optimización.

Ver ensamblado generado por estos compiladores.


Las clases son tipos , para que puedan tener un alias con typedef y using (en C++11).

Las funciones se parecen mucho más a objetos , por lo que no hay ningún mecanismo para crear un alias para ellos. En el mejor de los casos, podría usar punteros de función o referencias de función:

void (*g)() = &bar::f;
void (&h)() = bar::f;

g();
h();

Del mismo modo, no existe un mecanismo para crear alias en variables (abreviado de punteros directos o referencias).


Linux
  1. En Bash, ¿cuándo alias, cuándo escribir y cuándo escribir una función?

  2. ¿Cómo pasar parámetros a un alias?

  3. Cómo forzar a cp a sobrescribir sin confirmación

  4. ¿Cómo hacer que una función sea segura para la señal asíncrona?

  5. ¿Cómo escapar de los comandos en un alias de bashrc?

Cómo crear alias de Bash

Cómo crear un alias SSH en Linux

Cómo crear un alias en Linux

Cómo crear alias de dominio

Cómo crear un alias de dominio en cPanel

Cómo ejecutar un alias con Sudo en Linux