значение времени компиляции не может быть значением времени выполнения.
Если диапазон значений достаточно мал, вы можете сгенерировать все возможные значения и отправить его позже.
Кажется, вам просто нужно обработать 1, 2 и 3, что-то вроде:
template <std::size_t dim>
class MyClass
{
public:
void DoFullJob();
private:
Vec<float, dim> m_center;
vector<Vec<float, dim>> m_points;
// ...
};
int main()
{
int i = 0;
std::cin >> i;
switch (i) {
case 1: { MyClass<1>{}.DoFullJob(); break; }
case 2: { MyClass<2>{}.DoFullJob(); break; }
case 3: { MyClass<3>{}.DoFullJob(); break; }
default: // Error message, or nothing...
}
}
Для больших диапазонов регистр переключателя может быть заменен массивом функторов, сгенерированных как std::index_sequence
.