I am using EzLogger available at http://axter.com/ezlogger/index.htm
I tried to compile the simple example code from that website to test the C++ logger. I have some errors, and I found out that I could compile it with -fpermissive gcc option. Now, I have warning messages like this:
In file included from src/ezlogger_headers.hpp:18,
src/ezlogger.hpp: In static member function ‘static void axter::ezlogger<EZLOGGER_OUTPUT_POLICY, EZLOGGER_FORMAT_POLICY, EZLOGGER_VERBOSITY_LEVEL_POLICY>::log_out(const char*, int, const char*, axter::ext_data, bool, const T&)’:
src/ezlogger.hpp:248: warning: there are no arguments to ‘get_log_stream’ that depend on a template parameter, so a declaration of ‘get_log_stream’ must be available
src/ezlogger.hpp:248: warning: there are no arguments to ‘get_log_prefix_format’ that depend on a template parameter, so a declaration of ‘get_log_prefix_format’ must be available
src/ezlogger.hpp:249: warning: there are no arguments to ‘get_log_stream’ that depend on a template parameter, so a declaration of ‘get_log_stream’ must be available
src/ezlogger.hpp: In static member function ‘static void axter::ezlogger<EZLOGGER_OUTPUT_POLICY, EZLOGGER_FORMAT_POLICY, EZLOGGER_VERBOSITY_LEVEL_POLICY>::log_out(const char*, int, const char*, axter::ext_data, bool, const T1&, const T2&)’:
src/ezlogger.hpp:255: warning: there are no arguments to ‘get_log_stream’ that depend on a template parameter, so a declaration of ‘get_log_stream’ must be available
src/ezlogger.hpp:255: warning: there are no arguments to ‘get_log_prefix_format’ that depend on a template parameter, so a declaration of ‘get_log_prefix_format’ must be available
src/ezlogger.hpp:256: warning: there are no arguments to ‘get_log_stream’ that depend on a template parameter, so a declaration of ‘get_log_stream’ must be available
src/ezlogger.hpp: In static member function ‘static void axter::ezlogger<EZLOGGER_OUTPUT_POLICY, EZLOGGER_FORMAT_POLICY, EZLOGGER_VERBOSITY_LEVEL_POLICY>::log_out(const char*, int, const char*, axter::ext_data, bool, const T1&, const T2&, const T3&)’:
src/ezlogger.hpp:262: warning: there are no arguments to ‘get_log_stream’ that depend on a template parameter, so a declaration of ‘get_log_stream’ must be available
src/ezlogger.hpp:262: warning: there are no arguments to ‘get_log_prefix_format’ that depend on a template parameter, so a declaration of ‘get_log_prefix_format’ must be available
src/ezlogger.hpp:263: warning: there are no arguments to ‘get_log_stream’ that depend on a template parameter, so a declaration of ‘get_log_stream’ must be available
Is there a way to remove the warning messages?
I am not sure whether I have found an answer to my own question.
First, I noted a post, which hinted at what could be corrected in a newer version of C++ standard. When multiple base classes with “template” are used, a method “should” be explicitly specified as to which base class the method belongs. In the post, the reserved word “this” would be used. In my case, the functions are static, and I have to prepend the function, say get_log_stream, by the class name with double colons.