On 4 April 2018 at 11:24, Sebastian Messerschmidt via Boost-users <boost-users@lists.boost.org> 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@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users