作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我处理的代码库的尘土飞扬的角落里,我遇到了一个看起来像这样的类层次结构:
class Base1
{
int base1;
};
class Base2
{
int base2;
};
template <typename T> class A : public Base1
{
T _specialT;
};
template <> class A<int> : public Base2
{
int _special;
};
在 A 的特化中使用 Base2 令我感到惊讶。我一直在四处寻找以准确理解它的含义,但未能找到此类设计的任何示例或讨论。
在我看来,这样做会导致 A 从 Base1 和 Base2 继承,而 A 的其他非特化用途将仅从 Base1 继承。这给我留下了几个问题:
最佳答案
Base1
并且只有 <int>
特化继承自 Base2
(仅来自 Base2
)。不知道 this 使用的上下文,我无法回答 2. 或 3.
您经常可以在模板元编程中看到从不同类型派生的特化。例如:
template<typename T, typename U>
struct is_same : std::false_type {};
template<typename T>
struct is_same<T,T> : std::true_type {};
这是完全正确的做法。这是否是一件好事完全取决于所解决的问题。
关于c++ - 在 C++ 模板特化中添加基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18227993/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!