![]() |
1
2
函数的类型在编译时是已知的,可以使用
这看起来像:
不过,制定一个适当的解决方案并非易事,因为你需要编写48个部分专门化来涵盖每种函数,而不仅仅是那些没有cv或引用限定符的函数
在大多数情况下,您不需要知道参数的类型(或第一个参数)。也许你可以简单地问
而不是:
前一个问题可以很容易地回答
然后,您可以使用C++26包索引,
最终的解决方案看起来像:
后一种解决方案的一个明显问题是,您不必要地创建了中间对象。
例如,如果参数类型为
此外,如果你有一个参数,比如字符串文字(类型
可以说,这就是为什么后一种解决方案严格来说比前一种方案差的原因,尽管它少了一个模板参数,乍一看可能看起来更优雅。 |
![]() |
2
0
好吧,我找到了一个解决方案,也许有人有更好的解决方案:
|
![]() |
B. A. Sylla · 两种特殊方法中的相同代码 7 年前 |
![]() |
StoneThrow · 模板运算符<未调用 8 年前 |
![]() |
0xbadf00d · 我的部分模板专用化的模板参数不可推断 9 年前 |
![]() |
Paul Houx · 如何专门化具有多个参数的函数模板? 9 年前 |
![]() |
Sam Kellett · 我可以从类型列表中声明模板专用化吗? 9 年前 |
|
Jingcheng Yu · 如何专门化类模板的静态函数? 9 年前 |
|
user3749332 · 模板专用化-模板参数太少[closed] 10 年前 |
![]() |
Timothy Shields · 模板Conundrum 12 年前 |