有没有一种方法可以使模板自动推断出参考?

时间:2018-10-20 16:15:44

标签: c++ templates c++17 sfinae

我正在尝试编写一个可以同时接受非模板值和非模板引用的结构。例如,在C ++ 14中,我可以使用以下方法实现这一点:

template <typename T, T val> struct S{};

这样,我可以实例化

S<int, 10> s;

static constexpr double d = 10.0;
S<const double&, d> s;

我想知道这是否完全可以使用C ++ 17 template auto语法实现。如果我尝试,

template <auto val> struct S{};

然后,我可以实例化S <10>,但是我不知道如何实例化const double&版本。但是,如果我这样做,

template <auto& val> struct S{};

我可以实例化S<d>,但不能实例化S<10>。有没有办法使auto两者都起作用?我一直在尝试从我的C ++ 14版本继承SFINAE的东西,但是似乎无法使用元编程来检查传递到auto val的东西是否是引用。

编辑:此问题已解决。请参阅下面的评论。

0 个答案:

没有答案