gpt4 book ai didi

c++ - 需要指向 apply_visitor() 返回值的示例的指针

转载 作者:行者123 更新时间:2023-11-28 00:19:44 24 4
gpt4 key购买 nike

我的应用程序使用变体作为数据桶,将数据从一个对象传送到另一个对象。我看到的使用 apply_visitor() 提取绑定(bind)数据的示例具有 void operator(),因此 apply_visitor() 本身不返回任何内容。

谁能指出一些 apply_visitor() 返回提取值的示例?

最佳答案

Boost.Variant tutorial 里有很多.

这是其中的一个(从技术上讲这是二进制访问,但对于一个完整的示例来说,它是需要复制的最少代码量):

class are_strict_equals
: public boost::static_visitor<bool>
{
public:
template <typename T, typename U>
bool operator()( const T &, const U & ) const
{
return false; // cannot compare different types
}

template <typename T>
bool operator()( const T & lhs, const T & rhs ) const
{
return lhs == rhs;
}
};

boost::variant< int, std::string > v1( "hello" );

boost::variant< double, std::string > v2( "hello" );
assert( boost::apply_visitor(are_strict_equals(), v1, v2) );

boost::variant< int, const char * > v3( "hello" );
assert( !boost::apply_visitor(are_strict_equals(), v1, v3) );

关于c++ - 需要指向 apply_visitor() 返回值的示例的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28130477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com