Funções embutidas em C ++: declarar como tal, definir como tal ou ambos? Por quê?

O seguinte segmento de código é compilado sem problemas, mesmo quefoo é definido em linha, mas não declarado como tal, ebar é declarado em linha, mas não definido como tal.

int foo();
inline int foo() { return 3; }

inline int bar();
int bar() { return 4; }

inline int foobar();
inline int foobar() { return 5; }

int main(){
    // ...
}

Minha primeira pergunta: o compilador lêfoo como inline ou não? Sobrebar? Isso é especificado pelo padrão C ++?

Minha segunda pergunta: Qual dessas é a melhor prática para declarar e definir funções embutidas? É issofoo? bar? oufoobar? Por quê?

inb4 Li alguns outros posts relacionados a isso, mas nenhum deles responde diretamente à minha pergunta.

este resposta parece sugerir quefoo está em linha, mas não diz nada sobrebar. Também não explicaporque foo é preferido sobre os outros.este A resposta fala sobre quando devo usar as funções embutidas. Essa não é minha preocupação: eu já decidi usar funções embutidas. Minha pergunta (questão 2, para ser mais preciso) é se devo declarar como tal, defini-lo como tal ou ambos, e por que uma das convenções tem um estilo melhor que o resto.este A pergunta parece estar mais próxima da minha preocupação, mas ninguém a respondeu.

questionAnswers(2)

yourAnswerToTheQuestion