LINUX.ORG.RU

>Можно ли создать объект такого класса-шаблона не зная априори тип T

Можно, внутри какой нибудь шаблонной функции или шаблонного класса

yoghurt ★★★★★
()
template <typename T> A<T> Create(T val) { return A<T>(val); }

ня?

Sectoid ★★★★★
()

>не зная априори тип T, ... в момен вызова конструктора?

А как можно умудриться не знать тип в момент вызова? Разве что спрятать за void*.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

[quote] А как можно умудриться не знать тип в момент вызова? [/quote] Фантазию тренируйте, можно

[quote] template <typename T> A<T> Create(T val) { return A<T>(val); } ня? [/quote] Это-то понятно, а вот так что бы без этого?

[quote] в рантайме? [/quote] Пример?

mskmsk1985
() автор топика
Ответ на: комментарий от mskmsk1985

Это-то понятно, а вот так что бы без этого?

C++ выводит типы только для шаблонов функций

jtootf ★★★★★
()

В std например есть функция make_pair, как раз для создания с выводом. Так что вот так.

Booster ★★
()
Ответ на: комментарий от mskmsk1985

>[quote] в рантайме? [/quote] Пример?
никак, если как раз так надо

gavv
()

обычно такой класс сопровождают написанием функции

template<typename T> A<T>* a(T v) { return new A<T>(v); }

и вот у нее-то тип аргумента выводится компилятором.

www_linux_org_ru ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.