Конструктор может теоретически вывести тип объекта, который он строит, но утверждение:
Foo MyFoo(123);
Распределяет временное пространство для MyFoo
и должен знать полный тип MyFoo
, чтобы узнать, сколько места требуется.
Если вы хотите избежать ввода (то есть пальцами) названия особенно сложного шаблона, попробуйте использовать typedef
:
typedef std::map<int, std::string> StringMap;
Или в C ++ 0x вы можете использовать ключевое слово auto
, чтобы компилятор использовал вывод типа - хотя многие будут утверждать, что это приводит к менее читаемому и более подверженному ошибкам коду, в том числе и я сам. ; Р