Можно создать дубликат:
When to use inline function and when not to use it ?инлайн и передовая практика
Я видел много исходных кодов с использованием различных синтаксисов относительно inline
директивы.
namespace Foo
{
class Bar
{
public:
// 1 - inline on the declaration + implementation
inline int sum1(int a, int b) { return a + b; }
// 2 - inline on template declaration + implementation
template <typename T>
inline T sum2(T a, T b) { return a + b; }
// 3 - Nothing special on the declaration...
int sum3(int a, int b);
};
// 3 - But the inline directive goes after
// In the same namespace and still in the header file
inline int Bar::sum3(int a, int b) { return a + b; }
}
мне не удалось найти «официальные» руководящие принципы, касающиеся использования inline
:
Я только знаю, что
Я не знаю об этом.inline
это только намек на компилятор и что он навязывает
внутренней компоновку.
Вот мои вопросы:
- Is (1) хорошая практика?
- В (2) всегда есть директива
inline
? (Мое предположение было бы «нет», но я не могу объяснить, почему). Когда это необходимо? - (3) кажется наиболее используемым синтаксисом. Что-то не так с этим, или я должен использовать его тоже?
- Есть ли другое использование (синтаксис)
inline
Я не знаю?
Большое спасибо. Кажется мне более ясным. Как насчет 'встроенных' и' шаблонных' функций? – ereOn
@ereOn: функциональные шаблоны не являются функциями, но эффективно ведут себя так, как если бы они были 'inline' в любом случае. Явные специализации функций могут быть 'inline' независимыми от их исходного шаблона. Те же рекомендации могут быть соблюдены. –
Я думаю, что это (и возможный дубликат, который я пропустил) отвечает на все мои вопросы. Спасибо. – ereOn