使用trompeloeil返回基础类型时触发编译错误的问题求助
trompeloeil返回基础类型时触发编译错误的问题求助
最近在学用trompeloeil写Mock测试,结果卡在一个编译错误上了——当我让Mock的方法返回bool、int或者size_t这类基础类型时,总会触发编译失败,实在摸不着头脑,来请教下各位大佬!
错误信息
trompeloeil.hpp(1079,46): error: invalid operands to binary expression ('const bool' and 'std::nullptr_t')
1079 | noexcept(noexcept(std::declval<const T&>() == nullptr))
我的测试代码
#include <catch2/catch.hpp> #include <trompeloeil.hpp> class MockSample { public: ~MockSample(); MAKE_CONST_MOCK0(IsValid, bool()); }; class SampleSuite { public: SampleSuite() = default; }; TEST_CASE_METHOD(SampleSuite, "SampleExpecting", "[CalibTestSuite]") { MockSample sample; REQUIRE_CALL(sample, IsValid()).RETURN(false); sample.IsValid(); REQUIRE(true); }
我的疑惑
从错误信息来看,trompeloeil好像在尝试把基础类型(比如这里的bool)和indirect_null类型做比较,这完全说不通啊。我试过返回int、size_t也会遇到一模一样的问题。
我知道可以给每个基础类型特化is_null函数来绕开这个问题,但总不能每个基础类型都这么处理吧,这也太繁琐了。有没有更通用的解决办法呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

