c++ - 将可选的隐式转换为 bool 值?

标签 c++ boost googletest boost-optional

我正在阅读一些代码,但遇到了一些我不明白的事情。 它是关于测试 Boost::optional 值是否被初始化的。它使用提供 ASSERT_TRUE() 宏的 gtest 框架。

#include "gtest\gtest.h"

void test() {
    boost::optional<someClass> opt = someFunc();
    ASSERT_TRUE(!!opt);
}

为什么在 opt 之前需要 !!boost::optional 是否未隐式转换为宏所需的 bool 值?我认为使用 ASSERT_TRUE(opt) 来检查 opt 是否持有正确的值就足够了吗?

最佳答案

Is a boost::optional not impicit converted to a bool

不,不是。它到 bool 的转换运算符被标记为 explicit,但是您的测试框架需要一些可以隐式转换的东西。您也应该看到普通 bool test = opt; 的问题:它应该无法编译。

关于c++ - 将可选的隐式转换为 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912520/

相关文章:

c++ - O(1) std 或 boost 列表连接

c++ - 如何在 Windows 上使用 gzip 和 bzip2 支持构建 boost iostreams

c++ - Boost::Spirit::QI 解析器:解析元素的索引

c++ - cmake 找不到使用 vcpkg 安装的库

c++ - 如何测试从 std::istream 读取类?

c++ - boost 概念检查 operator() 重载

c++ - Windows 和 Linux 上的线程

c++ - 伪造的谷歌模拟委托(delegate)必须是可复制构造的

c++ - 使用节点将实例添加到链表

c++ - 如何在 Googletest 框架的多个测试中使用 "configurations"的全局变量