Вы не можете выбрать тип, используемый в создании шаблона класса, основываясь на значении, известном только во время выполнения.
Использование
std::vector<userWantsFloats ? float : double> data;
в порядке, если значение userWantsFloats
известно во время компиляции.Это не нормально, если значение userWantsFloats
неизвестно только во время выполнения.
Вам придется использовать что-то вроде:
if ( userWantsFloats )
{
std::vector<float> data;
// Use data
}
else
{
std::vector<double> data;
// Use data
}
Чтобы иметь возможностьмаксимизируйте повторное использование остальной части вашего кода, это должны быть шаблоны функций и / или шаблоны классов.
template <typename T>
void myAppLogic(std::vector<T>& data)
{
// Do the work of your application
}
if ( userWantsFloats )
{
std::vector<float> data;
myAppLogic(data);
}
else
{
std::vector<double> data;
myAppLogic(data);
}