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