Boost logo

Boost Users :

Subject: Re: [Boost-users] [log] Unable to use own severity struct encapsulated in namespace
From: Richard Hodges (hodges.r_at_[hidden])
Date: 2018-04-06 05:50:10


On 4 April 2018 at 11:24, Sebastian Messerschmidt via Boost-users <
boost-users_at_[hidden]> wrote:

> I've solved the issue:
>
> In case anyone is interested: You need to put the ostream& operator<< into
> the namespace of the severity-enum to make it work.
>

This is called ADL - Argument Dependent Lookup.

When c++ encounters a namespace-unqualified function call, it will consider
the current namespace, the global namespace, and the namespaces enclosing
the *type* of each of the function's arguments.

For this reason, it's good practice to declare all free functions
(including operators) that operate on user defined types in the namespace
of those types.

>
> Cheers
> Sebastian > Hi folks,
>
>
>> When taking this example [1] and modifying the enum 'severity_level' like
>> this:
>>
>> namespace x {
>> struct test
>> {
>> enum severity_level
>> {
>> normal,
>> notification,
>> warning,
>> error,
>> critical
>> };
>> };
>> }
>>
>> and replacing all references to severity_level with the appropriate
>> x::test::severity_level the 'operator<<' overload for the severity_level is
>> not issued. Can anyone help me with this one?
>>
>> I can supply the complete modified example if needed
>>
>>
>> Cheers
>> Sebastian
>>
>> [1] https://www.boost.org/doc/libs/1_58_0/libs/log/example/doc/
>> tutorial_attributes.cpp
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net