![]() |
1
3
首先,我更喜欢
Boost.Fusion
到
例如,我想给你一个小小的惊喜:
使用它真的很有趣:
嗯,我自己更喜欢按类而不是按索引编制索引,因为我可以传达含义,还可以添加类型检查;) |
![]() |
2
3
我是否可以推荐使用boost库的大量模板magicky类(以及经过良好测试和跨平台的模板magicky类)?听起来你要找的是 boost::tuple . 任何时候你都可以不写自己的代码,特别是在模板复杂的情况下,你应该使用别人的。 |
![]() |
3
1
正如其他人提到的,您可能应该能够通过重用boost或其他地方的现有实现来达到您想要的目的。 如果你想做一些用这些做不到的事情,或者如果你好奇:
为了方便起见,使用mpl的一种简单方法可能如下所示:
用途:
请记住,为了最终用户的方便,这仍然可以用伪变量模板包装。 |
![]() |
4
0
因为您的基本情况,您需要为<无,无…>实现。考虑:
考虑在n为5的完整自动类上调用此函数时会发生什么情况。它创建了一个有5个成员的自动类,并调用n=4…..然后再次调用,直到它到达这一点:
当然,对这个自动类的调用不会发生,但是编译器无论如何都必须编译该代码,因为您已经告诉它了。 您还需要制作一个自动类<Nothing,…>::get,因为n可以是1093。 我看你现在的界面没办法解决这个问题。如果你把n放在模板参数中,你可以做一个特殊的情况,而不是这样。在这种情况下你不能。我认为你会遇到很多问题,因为你选择了这个界面,这将是相当困难的解决。例如,当w是'int'但autoclass::get(n-1)返回一个double或更糟的值时,会发生什么情况,这是完全不兼容的? |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |