Per quanto ne so, ogni funzione membro non statica definita all'interno di una classe è implicitamente in linea. Ora mi chiedo se lo stesso è valido per le funzioni membro statico, considerando che posso definire la funzione più volte in diverse unità di traduzione.Una funzione membro statica definita all'interno di una classe è implicitamente inserita?
Ad esempio:
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: In questo documento (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf) ho trovato questo linee:
9.4.1 funzioni membro statiche [class.static.mfct] 1 [Nota : Le regole descritte in 9.3 si applicano alle funzioni membro statiche. - nota end]
e precedentemente descritto al punto 9.3:
Una funzione membro può essere definita (8.4) nella sua definizione di classe, in qual caso è una funzione membro inline (7.1.2) [...]
Sì, ma se sei preoccupato, lanciare la parola chiave 'inline' non danneggerà nulla. –
La funzione sarà 'inline' che non significa che sarà * in linea * –