No C++ moderno é possível escrever um alias de função membro com uma sintaxe diferente desta:
class C {
int f(int a) { return ++a; }
inline int g(int a) { return f(a); }
};
Tentei de algumas maneiras, mas nenhuma funcionou:
class C {
int f(int a) { return ++a; }
const auto g1 = f; // error: 'auto' not allowed in non-static class member
auto& g2 = f; // error: 'auto' not allowed in non-static class member
using g3 = f; // error: unknown type name 'f'
};
Por favor, não sugira usar o pré-processador...
Por que preciso disso? Porque:
- Tenho um código existente que não posso modificar e que usa a função de membro antiga, e um código novo que deve usar a nova.
- Gostaria de evitar a chamada extra (mesmo que ela possa ser otimizada).
PS: erros gerados pelo clang 20.1.0