在浏览一些mili源代码时,我遇到了一个声明如下的结构:
template <class T, class Pre, class Pos>
struct PrePosCaller<T*, Pre, Pos>
(来自here)
我不熟悉的部分是<T*, Pre, Pos>
。我理解代码在这种情况下的作用及其目的,但我想知道在哪里记录所以我可以更多地学习/理解它。
答案 0 :(得分:3)
我想知道它的记录在哪里
如果您正在寻找相关主题的介绍和背景,请获取C++ Templates: The Complete Guide的副本。
虽然最终文档本身就是C ++标准,但如果没有精心编写的概述,它就没那么有趣。
答案 1 :(得分:2)
这是一个模板专业化。特别是部分专业化。
代码中的某处有一个模板声明为:
template <class T, class Pre, class Pos>
struct PrePosCaller { //...
};
或类似的东西。然后,他们为第一个参数是指针类型的情况提供该模板的特化。也就是说,当模板的第一个参数是指针时,这是PrePosCaller
的模板定义。
答案 2 :(得分:1)
Thinking in C++ Vol. 2提供了关于模板和一些相关技术的教学观点。它也是一个关于C ++的优秀读物。它是免费的。