3
|
Arthur Tacca wim · 技术社区 · 6 年前 |
![]() |
1
2
推导参数的一个简单方法是使用部分模板专门化。 在这个例子中,我通过转发非类型成员函数指针来解决这个问题 和 它是一个自定义函子的类型,然后返回。 一部分专攻这个类型,其余的都是直接的。
|
![]() |
2
1
如果我正确理解你想要什么…在我看来这是可能的,但我只看到一个复杂的解决方案。
希望其他人能提出一个更简单的方法,我使用了两个助手:一个声明的仅模板函数
以及模板的专门化
现在你可以写一个
下面是一个完整的工作示例
|
![]() |
3
0
还有一种可能性。它受到了其他答案的启发,但是虽然这两个答案都使用了部分模板专门化,但这一个只使用了函数模板参数推导。 内部函数接受第二个参数,其类型用于此推断,其运行时值等于非类型模板参数的编译时值。它在运行时被忽略,特别是它不会被lambda捕获。
与其他两个答案一样,这一个仍然使用来自C++ 17标准的自动模板参数,所以它在VisualStudio中不起作用。这是一个遗憾,但它似乎是不可能的只是C++ 14。 脚注:
另一个更主观但可能最正确的答案是,我不应该首先尝试将成员函数作为模板参数传递。原文
|