Вы можете, но вы должны объявить его static
и const
:
struct Timer {
static const auto start = 0;
};
A working example in Coliru.
При таком ограничении вы поэтому не можете иметь start
как нестатический член и не можете иметь разные значения в разных объектах.
Если вы хотите различные типы start
для различных объектов, лучше иметь свой класс как шаблон
template<typename T>
struct Timer {
T start;
};
Если вы хотите вывести тип T
, вы можете сделать на заводе, как функцию, которая делает то типа.
template<typename T>
Timer<typename std::decay<T>::type> MakeTimer(T&& startVal) { // Forwards the parameter
return Timer<typename std::decay<T>::type>{std::forward<T>(startVal)};
}
Live example.
фигуру из своего типа –
Не то, что шаблоны для? – user1520427
Когда вы узнаете, какой тип он будет? Время компиляции или время выполнения? Можете ли вы дать нам какой-то контекст? Что ты пытаешься сделать? – Homer6