I have the following test :
BOOST_CHECK_NE(pointer, nullptr);
The compilation fails due to
/xxx/include/boost/test/tools/detail/print_helper.hpp:50:14: error: ambiguous overload for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream}’ and ‘std::nullptr_t’)
What is wrong and how should I test for null pointers ?
The easiest check for a pointer being non-null is this:
BOOST_CHECK(pointer);
A null pointer implicitly converts to false
, a non-null pointer implicitly converts to true
.
As to what the problem with your use case is: nullptr
is not a pointer type, it's of type std::nullptr_t
. It can be converted to any pointer type (or pointer to member type). However, there is no overload of <<
for inserting std::nullptr_t
into a stream. You would have to cast nullptr
to the appropriate pointer type to make it work.
As mentioned in error message, nullptr
has ambiguous overloads.
BOOST_CHECK(pointer);
or
BOOST_CHECK_NE(pointer, static_cast<decltype(pointer)>(nullptr));
should do the job.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With