我在使用英特尔编译器11.1.xxx时遇到了一些问题 在使用MS CL编译器编译期间不会出现这些问题。 我不知道代码有什么问题(外部升压库头) 我最终遇到了多个错误:
.. \升压/日志/属性/ attribute_set.hpp(148): 错误:声明不兼容 用常量“bool fConstV”(声明 在第147行) 模板< bool fConstV>朋友类iter; ^ 检测期间: 类的实例化“boost :: log_mt :: basic_attribute_set [与CharT = char]“在第252行 “.. \升压/日志/来源/ basic_logger.hpp” 类的实例化“boost :: log_mt :: sources :: basic_logger [with 图表=字符, FinalT =的boost :: log_mt ::来源::记录仪, ThreadingModelT =的boost :: log_mt ::来源:: single_thread_model]” 在738行 “.. \升压/日志/来源/ basic_logger.hpp” 实例化类“boost :: log_mt :: sources :: basic_composite_logger [with CharT = char, FinalT =的boost :: log_mt ::来源::记录仪, FeaturesT =提振:: MPL ::已经 ctor0]“在787行 “.. \升压/数/来源/ basic_logger.hpp”
.. \升压/日志/属性/ named_scope.hpp(146): 错误:声明不兼容 用常量“bool fConstV”(声明 在第145行) 模板< bool fConstV>朋友类iter; ^ 检测期间: 类的实例化“boost :: log_mt :: attributes :: basic_named_scope_list [与CharT = char]“在第364行 类的实例化“boost :: log_mt :: attributes :: basic_named_scope [与CharT = char]“在第94行 “.. \升压/日志/格式化/ named_scope.hpp” 类的实例化“boost :: log_mt :: formatters :: fmt_named_scope [使用CharT = char]“在第270行 “.. \升压/数/格式化/ named_scope.hpp”
attributeset.hpp
template< typename CharT >
class basic_attribute_set
{
/* ... */
template< bool fConstV > class iter;
template< bool fConstV > friend class iter;
template< bool fConstV >
class iter
{
friend class iter< !fConstV >;
friend class basic_attribute_set< CharT >;
/* ... */
/* ... */
}
}
basiclogger.hpp
class logger : public basic_composite_logger< char, logger, single_thread_model, mpl::vector0< > >
{
BOOST_LOG_FORWARD_LOGGER_CONSTRUCTORS(logger)
};
欢迎任何提示。
答案 0 :(得分:0)
也许在第148行你想要template <bool fConstV> friend class iter<fConstV>;
?但是,当iter
被声明为嵌套类时,我认为你不需要朋友声明;