减少模板参数的数量

Reduce number of template parameters

我想将我在编译时知道的一些对象存储在 class 中,并保留它们 constexpr,以便在编译时继续。但是,我将这些值存储在 struct 中的方式似乎并不令人满意:

template <class T1, T1 _x1, class T2, T2 _x2>
struct A
{
   constexpr static T1 x1 = _x1;
   constexpr static T1 x2 = _x2;
}

虽然上面的代码实现了我的目标,但为了在模板化的 class.[=14= 中存储 constexpr 值,必须显式提供类型和值似乎不必要地复杂]

是否有 better/more 优雅的方法来实现这一点?特别是一个,我不必首先再次推断类型的地方是可取的。

在 C++17 中,您可以使用自动模板参数

template <auto _x1, auto _x2>
struct A
{
   // Use _x1 and _x2 directly
}