Code: Select all
// foo.hpp
class Foo {
public:
int fn();
int fn2();
private:
static int priv();
static __attribute__((visibility("hidden"))) int priv2();
};
// foo.cpp
#include
template
int run(Func func)
{
int sum = 0;
for (int i = 0; i < 10'000'000; ++i) {
sum += func();
}
return sum;
}
int Foo::fn() { return run(&Foo::priv); }
int Foo::fn2() { return run(&Foo::priv2); }
int Foo::priv() { return 1; }
int Foo::priv2() { return 1; }
Stellen Sie sich eine große Codebasis mit vielen gemeinsam genutzten Bibliotheken und vor > Es kann garantiert werden, dass genau eine gemeinsam genutzte Bibliothek eine Definition für eine private Member-Funktion bereitstellt. Wenn es hilfreich ist, kann diese Garantie auf alle Mitgliedsfunktionen ausgeweitet werden.
Gibt es in dieser Situation eine praktikable Option zum Kompilieren des Codes, um Inlining für Foo::priv()< zu ermöglichen /code> ohne manuelle Angabe der Sichtbarkeit (oder manuelles Inlining des Codes)?