![]() |
1
5
拥有一个模板类现在称为“traits blob”。不推荐使用traits blob,因为它们不能很好地处理元函数(即编译时函数)。 元函数是一个接受类并对其执行某些操作的模板。类似:
然后,您可以通过执行以下操作为您的任何特性调用元函数:
您将无法使用traits blob类调用元函数,因为现在有方法告诉元函数要使用哪个typedef。 如果你想了解更多关于元函数的知识,我推荐这本书 C++ Template Metaprogramming . |
![]() |
2
1
这是风格问题。您的示例可能更易于维护,但是拥有单独的类型确实会带来独立的优势—您可以很容易地专门化,比如,
如果你想更深入,我会质疑缺乏违约:
这种方法意味着任何提供必需typedef的类都会自动限定。宏仍可以用于生成这些typedef或专门化类,但这可能不是必需的。(
编辑:有了一个更大的traits类,分离东西可以用来减少所需的实例化次数,但是如果traits类有一些元素,其中使用一个可能意味着使用其他的,那么这就没有任何好处。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |