Почему компилятор не может вывести тип шаблона из аргументов по умолчанию?

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

18
задан M.M 27 November 2014 в 01:55
поделиться