Я пишу класс шаблона и в какой-то момент своего кода хотел бы иметь возможность инициализировать значение объекта параметризованного типа в стеке. Прямо сейчас я выполняю это, написав что-то по этому поводу:
template <typename T> void MyClass<T>::doSomething() {
T valueInitialized = T();
/* ... */
}
Этот код работает, но (если компилятор не является интеллектуальным) он требует ненужного создания и уничтожения временного объекта T
. То, что я хотел бы написать, следующее: я знаю неверно:
template <typename T> void MyClass<T>::doSomething() {
T valueInitialized(); // WRONG: This is a prototype!
/* ... */
}
Мой вопрос заключается в том, есть ли хороший способ инициализировать объект автоматически, без необходимости явно создавать временный объект и назначать его автоматическому объекту. Это можно сделать? Или T var = T();
так хорошо, как это получается?