Я был удивлен, когда следующий код привел к ошибке не удалось вывести аргумент шаблона для T
:
struct foo
{
template <typename T>
void bar(int a, T b = 0.0f)
{
}
};
int main()
{
foo a;
a.bar(5);
return 0;
}
Вызов a.bar
решает проблему. Почему компилятор не может вывести тип из аргумента по умолчанию?