template< class T >
class Foo {
public:
Foo( T t ) { }
};
int main () {
int i = 0;
Foo f( i );
}
В приведенном выше коде компилятор жалуется, что аргументы шаблона отсутствуют до 'f'. Я понимаю, что вывод аргументов шаблона для класса из аргументов конструктору не является частью стандарта, но почему мой вопрос? Разве компилятор не имеет всей необходимой информации, чтобы неявно создать экземпляр Foo<int>
и вызвать его конструктор?
Отредактировано, чтобы было ясно, что я вызываю конструктор с int
(в отличие от short
, long
, void*
и т.д.)