问题标签 [apply-visitor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

lambda - 是否可以为 Boost 变体容器创建 Boost multi_index MEM_FUN 密钥提取器?

我正在尝试实现 Boost::variant 对象的 multi_index 容器。该变体由一个公共基础对象的两个派生类组成。我在每个派生类(“extractKey()”)中实现了一个虚函数,它返回一个 std::pair<char,char> 以提供合适的键值,而不管哪个派生对象占据了变体。

如何使用 apply_visitor()(可能在 lambda 表达式中?)调用“extractKey()”函数作为 CONST_MEM_FUN 键提取器以获得键值?为了实现这一点,我无法获得正确的语法。

我正在使用 Visual Studio 2019 和 C++17。

编辑:虽然我已经有了一个更加理智和传统的解决方案,它只是在派生对象中使用基对象指针和虚函数的容器(并且没有变体!)其他场景需要存储根本不同的对象(不是派生来自一个公共基础对象)在一个 multi_index 容器中。这就是我希望找到这里提出的问题的解决方案的真正原因。

0 投票
1 回答
32 浏览

c++ - 为什么下面的 boost 变体访问者代码不起作用

我有一个结构A:

我的增强变体是:

我的访问者函子定义为:

当我执行上述操作时,我收到一条错误消息:

不知道为什么会这样。

我使用的 boost 版本是 107200

提前致谢。