Насколько я знаю, каждая нестатическая функция-член, определенная внутри класса, неявно встроена. Теперь мне интересно, справедливо ли то же самое для статических функций-членов, учитывая, что я могу определить функцию несколько раз в разных единицах перевода.Является ли статическая функция-член, определенная внутри класса, неявно вложенной?
В качестве примера:
class Foo {
public:
static void static_f(void) { std::cout << static_data << std::endl; } //Is it inline?
static void static_f2(void); //I guess it isn't
private:
static int static_data;
int non_static_data;
};
PS: В этом документе (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf) Я нашел эти строки:
9.4.1 статические функции [1] class.static.mfct [Примечание : Правила, описанные в 9.3, применяются к статическим функциям-членам. - конец примечание]
и ранее в разделе 9.3:
Функция член может быть определен (8.4) в своем определении класса, в этом случае он является членом встраиваемая функция (7.1.2) [...]
Да, но если вы беспокоитесь об этом, бросание ключевого слова 'inline' ничем не повредит. –
Функция будет 'inline', которая не означает, что она будет * встроена * –