Компилятор должен уметь определять типы, но если вы никогда его не дадите, он не знает, что делать с этими значениями по умолчанию.По сути, он не мог сопоставить ваш вызов с какой-либо функцией, потому что вы не дали ей тип для работы, а определение функции не помогло (по вышеупомянутым причинам).Поэтому вам нужно добавить в вызов тип в скобках, например
int main()
{
foo_bar<int>();
return 0;
}
или любой другой, который вам нравится.