Я был удивлен, что следующий код привел к ошибке could not deduce template argument for 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<float>(5)
устраняет проблему. Почему компилятор не может вывести тип из аргумента по умолчанию?