Я думаю, что вы путаете связывание с предоставлением прототипа для zod()
(то есть объявление, например, путем включения файла заголовка).
Многие реализации успешно скомпилируют и свяжут программу, которая имеет inline
функций (или шаблонов), которые вызывают функции без определения. Итак, это работает просто отлично (по крайней мере, MSVC 10, GCC 4.3 и GCC 4.5):
void zod(); // we need the declaration, but no definition
inline void bar() { zod(); }
int main(int argc, char *argv[])
{
return 0;
}
Я не уверен, что стандарт требует этого. И, конечно, он также должен работать с шаблоном вместо inline
, если шаблон никогда не создается.