Может ли кто-нибудь сказать мне, как подавить следующее предупреждающее сообщение, которое генерируется Boost.Log и GCC 4.4.7? Мой проект построен в режиме С++ 11 (с -std=c++0x
в GCC 4.4.7).
src/Logger.cc:7: warning: missing initializer for member ‘boost::log::v2_mt_posix::expressions::attribute_keyword<tag::severity, boost::phoenix::actor>::proto_expr_’
где src/Logger.cc
— это исходный файл моего класса ведения журнала, который является оболочкой Boost.Log. В строке 7 используется один из макросов Boost.Log следующим образом. Logger::ESeverityLevel
— это перечисление, определенное в Logger.h
.
BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", Logger::ESeverityLevel)
Этот макрос можно расширить следующим образом.
namespace tag {\
struct severity :\
public ::boost::log::expressions::keyword_descriptor\
{\
typedef Logger::ESeverityLevel value_type;\
static ::boost::log::attribute_name get_name() { return ::boost::log::attribute_name("Severity"); }\
};\
}\
typedef ::boost::log::expressions::attribute_keyword< tag::severity > severity_type; const severity_type severity = {};
Похоже, что инициализация severity_type
выдает это предупреждение, в то время как оно действительно с Clang (Apple LLVM версии 6.0).
Официальный пример кода этого макроса можно найти по адресу http://theboostcppplibraries.com/boost.log#ex.log_05