Boost:为什么Apply_visitor在此代码中不起作用

Boost: Why is apply_visitor not working in this code

本文关键字:代码 不起作用 visitor 为什么 Apply Boost      更新时间:2023-10-16

我正在收到以下编译器错误:

/usr/include/boost/variant/variant.hpp:832:32:错误:无匹配 致电"(const startswith)(bool&)"

有关以下代码。有人知道为什么吗?

#include "boost/variant/variant.hpp"
#include "boost/variant/apply_visitor.hpp"
using namespace std;
using namespace boost;
typedef variant<bool, int, string, const char*> MyVariant;
class StartsWith
    : public boost::static_visitor<bool>
{
public:
    string mPrefix;
    bool operator()(string &other) const
    {
        return other.compare(0, mPrefix.length(), mPrefix);
    }
    StartsWith(string const& prefix):mPrefix(prefix){}
};
int main(int argc, char **argv) 
{
    MyVariant s1 = "hello world!";
    apply_visitor(StartsWith("hel"), s1); // << compiler error
    return 0;
}

您必须为MyVariant中声明的每种类型提供操作员。