Log4CXX 和 C++11 的 ostringstream 错误

ostringstream error with log4cxx and c++11

提问人:greywolf82 提问时间:4/6/2022 更新时间:4/6/2022 访问量:105

问:

我正在使用 log4cxx 0.10.0,但在编译软件时遇到问题。我创建了一个测试程序:

#include <sstream>
#include <log4cxx/logger.h>

using namespace log4cxx;
using namespace log4cxx::helpers;

LoggerPtr loggerMyMain(Logger::getLogger( "main"));

int main() {
    std::ostringstream s;
    s << "Test";
    LOG4CXX_DEBUG(loggerMyMain, "aaa" << s);

    return 0;
}

我收到来自 gcc 的错误:

/usr/include/log4cxx/helpers/messagebuffer.h:在实例化中 'std::basic_ostream& log4cxx::helpers::operator<<(log4cxx::helpers::CharMessageBuffer&, const V&) [with V = std::__cxx11::basic_ostringstream]': ../main.cpp:23:5:从这里需要 /usr/include/log4cxx/helpers/messagebuffer.h:190:44:错误:不匹配 对于“运算符<<”(操作数类型为“std::basic_ostream”和 '常量标准::__cxx11::basic_ostringstream') return ((std::basic_ostream&) os) << val; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~

使用 C++03 标准,错误不再存在。我正在使用 GCC 8.3.1。

C++ C++11 日志4CXx

评论

0赞 pptaszni 4/6/2022
我不认为有超载作为 LHS。godbolt.org/z/xhaco6feYstd::ostringstreamoperator<<std::ostream
0赞 greywolf82 4/6/2022
好的,但是使用 C++03 它可以工作
0赞 StoryTeller - Unslander Monica 4/6/2022
但它起作用了吗?我能想到它编译的原因,但实际上打印出内容是另一回事。

答: 暂无答案