Re: r279514: buildworld failure: /usr/src/lib/libnv/tests/dnv_tests.cc:453:2: error: use of overloaded operator '<<' is ambiguous

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Wed, 4 Mar 2015 21:19:43 +0100
On 04 Mar 2015, at 18:18, O. Hartmann <ohartman_at_zedat.fu-berlin.de> wrote:
> 
> Am Wed, 4 Mar 2015 14:10:00 +0100
> Dimitry Andric <dimitry_at_andric.com> schrieb:
> 
>> On 04 Mar 2015, at 12:31, O. Hartmann <ohartman_at_zedat.fu-berlin.de> wrote:
>>> On Mon, 2 Mar 2015 08:58:05 -0500
>>> Ryan Stone <rysto32_at_gmail.com> wrote:
>>> 
>>>> Can you post the contents of your make.conf and src.conf?  I didn't
>>>> see this in any of my "make tinderbox" runs
>>>> _______________________________________________
>>>> freebsd-current_at_freebsd.org mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>>>> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>>> 
>>> The culprit is the option
>>> 
>>> CXXFLAGS+=             -std=c++11
>>> 
>>> in /etc/src.conf
>> 
>> Right, it would be nice to have libnv compiling for C++11 though.  I'll have a look
>> later today.
...

It is caused by the following test in lib/libnv/tests/dnv_tests.cc:

	ATF_REQUIRE_EQ(actual_val, NULL);

In C++ mode, ATF_REQUIRE_EQ will attempt to output the value of NULL
onto a std::ostringstream, but this has become ambiguous in C++11. [1]

The fix is to cast the NULL value to the specific pointer type ATF is
testing against, 'nvlist_t *' in this case.  See the attached diff.

-Dimitry

[1] Before C++11, NULL is defined as 0, e.g. plain zero, and it will
therefore be printed as an integer "0".  In C++11 and later, NULL is
defined as the keyword nullptr, e.g. the null pointer literal.  Since
the null pointer can be converted to any other pointer type, and there
are many different operators defined in C++ to output those operators,
the call is ambiguous, and must be resolved by the developer.


Received on Wed Mar 04 2015 - 19:19:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:56 UTC