You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 09:23:02