boost :: variant是否适用于std :: string?

sti*_*ilz 4 c++ boost stl variant wstring

我用C++编写了一个简单的程序,使用了boost :: variant.程序代码如下所示.

    #include <string>
    #include <iostream>
    #include <boost/variant.hpp>

    int main (int argc, char** argv)
    {
        boost::variant<int, std::wstring> v;
        v = 3;
        std::cout << v << std::endl;
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试用命令编译它时

g++ main.cpp -o main -lboost_system
Run Code Online (Sandbox Code Playgroud)

我明白了

/usr/include/boost/variant/detail/variant_io.hpp:64: error: no match for ‘operator<<’ in ‘((const boost::detail::variant::printer<std::basic_ostream<char, std::char_traits<char> > >*)this)->boost::detail::variant::printer<std::basic_ostream<char, std::char_traits<char> > >::out_ << operand’
Run Code Online (Sandbox Code Playgroud)

接下来是一堆候选函数.

我错过了什么?有趣的是,当我使用std::string而不是std::wstring一切都很好.

提前致谢.

neo*_*phi 6

问题是wstring不能<<进入cout.请尝试使用wcout.这不是变体的问题.