型模板参数我定义的类模板X
这样的:自动推导出从依赖非类型模板参数
template <typename T>
using Func = void(T);
template <typename T, Func<T> F>
class X { ... };
现在我可以使用X
类是这样的:
void func(int i);
X<int, &func> x;
它对于我在x
的声明中重复int
类型似乎是多余的。有没有一种方法可以自动演绎出来?我的意思是我想要一个类型模板Y
,可以通过Y<&func>
使用,等于X<int, &func>
,自动推导出int
。
我尝试了很多,甚至疯狂的定义模板的功能和使用decltype
,但似乎没有办法的&func
命名之前下降了T
。
更新:这似乎是我使用MSVC 2017.5防止我从Kerrek的建议在模板参数列表使用auto
的限制。我不知道是否有一些“黑客”没有这个功能获得相同的效果。
一个典型的 “黑客” 之前C++ 17使用人涉及一个辅助函数声明,'decltype'和宏。 –