For example I wanted to have a variable of type auto
because I\'m not sure what type it will be.
When I try to declare it in class/struct declaration it
You can, but you have to declare it static
and const
:
struct Timer {
static const auto start = 0;
};
A working example in Coliru.
With this limitation, you therefore cannot have start
as a non-static member, and cannot have different values in different objects.
If you want different types of start
for different objects, better have your class as a template
template
struct Timer {
T start;
};
If you want to deduce the type of T
, you can make a factory-like function that does the type deduction.
template
Timer::type> MakeTimer(T&& startVal) { // Forwards the parameter
return Timer::type>{std::forward(startVal)};
}
Live example.