减少模板参数的数量
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
}
我想将我在编译时知道的一些对象存储在 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
}