В настоящее время я работаю над кодом, написанным кем-то другим, и я не уверен в эффективности их метода. У них есть шаблонный класс, который использует разрешение области для доступа к членам класса вместо того, чтобы иметь указатель на шаблонизированный класс и обращаться к нему таким образом. Например:
template <typename T>
class A {
void func() {
T::DoSomething();
}
};
class B {
static void DoSomething() {
// code...
}
};
Я лично чувствую, что это затрудняет понимание класса шаблона, но моя основная область запросов — это производительность. Что является более эффективным; с использованием разрешения области или с закрытой переменной-членом A::T* p_blah
и звонит B
использование функции p_blah->DoSomething()
?
Разрешение области — это то, что происходит полностью во время компиляции. Метод, используемый в этом коде, приводит к прямому, встроенному вызову функции. Вы не можете победить это.
Ваше предложение:
A
(увеличение его размера) или в глобальном масштабе (всегда проблематично)Короче говоря, у него мало шансов быть таким же эффективным, как у вас сейчас.
Других решений пока нет …