为了让我的问题更清楚,首先我向您展示我的模板结构体
State
,以描述状态空间的状态向量,根据维度而定:template<unsigned int Dimension>
struct State;
// Specialization : for dimension 1
template<>
struct State<1>
{
State() = default;
State(double x) : x{ x } {}
double x{};
};
// Specialization : for dimension 2
template<>
struct State<2>
{
State() = default;
State(double x, double dx) : x{ x }, dx{ dx } {}
double x{};
double dx{};
};
// Specialization : for dimension 3
template<>
struct State<3>
{
State() = default;
State(double x, double dx, double ddx) : x{ x }, dx{ dx }, ddx{ ddx } {}
double x{};
double dx{};
double ddx{};
};
通过这种方式,我可以使用三个维度构建一个state
变量:
1维:
auto state = State<1>(2.0);
2维:
auto state = State<2>(2.0, 4.7);
3维:
auto state = State<3>(2.0, 4.7, 5.9);
但我在想:
我能否定义一个变量state
,而不提供尖括号中的维数值,而只需编译器从我在构造函数中提供的值的数量中推断出它。例如:
// What i would like to be able to do
auto state = State{2.0, 4.7}; // FAILED ( 2 values provided, so I would like the compilator to deduce it's the constructor of State<2> )
// Instead of doing
auto state = State<2>{2.0, 4.7};
感谢您的帮助!