GNU/Linux >> Belajar Linux >  >> Linux

C++11:Bagaimana cara membuat alias suatu fungsi?

Anda dapat menentukan alias fungsi (dengan beberapa pekerjaan) menggunakan penerusan sempurna:

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

Solusi ini berlaku meskipun f kelebihan beban dan/atau template fungsi.


constexpr penunjuk fungsi dapat digunakan sebagai alias fungsi.

namespace bar
{
    int f();
}

constexpr auto g = bar::f;

Sangat mungkin (tetapi tidak dijamin oleh bahasa) yang menggunakan g menggunakan bar::f secara langsung. Secara khusus, ini bergantung pada versi kompiler dan tingkat pengoptimalan.

Secara khusus, ini berlaku untuk:

  • GCC 4.7.1+, tanpa pengoptimalan,
  • Dentang 3.1+, tanpa pengoptimalan,
  • MSVC 19.14+, dengan pengoptimalan.

Lihat rakitan yang dihasilkan oleh kompiler ini.


Kelas adalah tipe , sehingga dapat di-alias dengan typedef dan using (dalam C++11).

Fungsi jauh lebih seperti objek , jadi tidak ada mekanisme untuk membuat alias mereka. Paling-paling Anda bisa menggunakan penunjuk fungsi atau referensi fungsi:

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

g();
h();

Dengan nada yang sama, tidak ada mekanisme untuk membuat alias variabel (kependekan dari pointer atau referensi).


Linux
  1. Di Bash, Kapan Alias ​​​​Kapan Skrip, Dan Kapan Menulis Fungsi?

  2. Bagaimana Cara Melewati Parameter Ke Alias?

  3. Bagaimana Cara `alias Sudo !!`?

  1. Bagaimana Cara Kerja Bom Garpu?

  2. Bagaimana cara membuat fungsi async-signal-safe?

  3. cara menggunakan $1 dengan benar dalam sebuah alias dengan dua argumen

  1. Bagaimana Cara Mendapatkan Penyelesaian Bash Untuk Alias ​​​​Perintah?

  2. Cara memaksa cp untuk menimpa tanpa konfirmasi

  3. mac cara menyimpan alias di komputer