2010-11-18 3 views

ответ

3

Тип аргументов по умолчанию в функции не может помочь в выводе шаблона type-parameter. T не может быть выведено в любом случае, когда вы вызываете функцию типа foo_bar(), и поэтому вы получаете ошибку.

Итак, попробуйте это foo_bar<int>();. В этом случае такой проблемы не будет, поскольку явно указан тип T.

+1

это работает. thankz. – FooBar

2

Компилятор должен уметь определять типы, но если вы его никогда не дадите, он не знает, что делать с этими значениями по умолчанию. В принципе, он не может соответствовать вашему вызову любой функции, потому что вы не дали ему тип для работы, и определение функции не помогло (по вышеуказанным причинам). Таким образом, вам нужно добавить тип в скобках вызова, как

int main() 
{ 
foo_bar<int>(); 
return 0; 
} 

или любой другой тип поражает ваше воображение.

Смежные вопросы