我有以下测试:
BOOST_CHECK_NE(pointer, nullptr);
由于
,编译失败/xxx/include/boost/test/tools/detail/print_helper.hpp:50:14:错误:'operator<<'的模糊重载(操作数类型是'std :: ostream {aka std :: basic_ostream }'和'std :: nullptr_t')
有什么问题,我应该如何测试空指针?
答案 0 :(得分:8)
对指针非空的最简单检查是:
BOOST_CHECK(pointer);
空指针隐式转换为false
,非空指针隐式转换为true
。
至于您的用例的问题是:nullptr
不是指针类型,它的类型为std::nullptr_t
。它可以转换为任何指针类型(或指向成员类型的指针)。但是,将<<
插入流中没有std::nullptr_t
的重载。您必须将nullptr
强制转换为适当的指针类型才能使其正常工作。
答案 1 :(得分:3)
正如错误消息中所述,nullptr
具有不明确的重载。
BOOST_CHECK(pointer);
或
BOOST_CHECK_NE(pointer, static_cast<decltype(pointer)>(nullptr));
应该做的。