测试仅在travis-ci上失败;不支持RTTI
Test failing only on travis-ci; RTTI not supported?
我有一个相当简单的测试,在travis-ci持续集成服务器上失败了,但我无法重现失败。看起来好像CI服务器上不支持RTTI,但据我所知,在gcc上关闭RTTI是不可能的。
我想知道我是否依赖于这里的未定义行为,这就是导致差异的原因。谁能告诉我为什么这可能会失败不一致?
#include <catch.hpp>
template <typename T, typename U>
T * As(U * Object)
{
return dynamic_cast<T *>(Object);
}
class Base
{
public:
Base() {}
virtual ~Base() {}
};
class Derived : public Base
{};
{
// in tests...
Derived b;
REQUIRE(As<Derived>((Base*)&b) == &b);
}
当我在各种体系结构上运行时,上面的测试总是通过的,但是通过以下扩展在travis-ci上失败:
__null == 0x00007ffd6d95fe70
所以As<Derived>((Base*)&b)
在我期望的时候返回null
返回一些非空值。我们可以明显地看到,b
实际上是一个Derived
实例-我做错了什么我的各种类型转换和取消引用?
我把这个作为对这个问题的评论,但我认为它应该在答案部分。事实证明,我有多个编译单元,类称为Base
和Derived
,当链接它引起冲突。修改类名解决了这个问题。
相关文章:
- 为什么istream不支持右值提取
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- Casablanca/cpprestsdk listener.support接受函数,但不支持方法
- 为什么C++不支持对未初始化变量进行智能分析?
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 在 Ubuntu 18.04 上编译 GLSL 着色器时"不支持 GLSL 3.30"?
- 为什么联机C++ IDE 不支持"graphics.h"头文件?
- Clang编译器不支持aarch64-apple-darwin上的-fxray-instrument
- 为什么我的 clang 格式不支持 PPDirectiveIndentStyle 选项?
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 为什么不支持 Xcode 1.5?
- C++20 从括号中的值列表初始化聚合,不支持内部数组
- 为什么结构化绑定不支持可变数组?
- 您选择的 CPU 不支持 x86-64 指令集
- 将数据发送到多个客户端 UDP 时不支持地址族
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 瓦尔格林德"不支持arch_prctl选项"
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- 不支持 GLSL 330 内核
- 测试仅在travis-ci上失败;不支持RTTI