gpt4 book ai didi

c++ - 需要从枚举(类)到 std::binary_function 的映射

转载 作者:太空狗 更新时间:2023-10-29 20:47:11 32 4
gpt4 key购买 nike

我有这个枚举(类)

enum class conditional_operator
{
plus_op,
or_op,
not_op
}

我想要一个代表这些映射的 std::map:

std::map<conditional_operator, std::binary_function<bool,bool,bool>> conditional_map = 
{ { conditional_operator::plus_op, std::logical_and<bool> },
{ conditional_operator::or_op, std::logical_or<bool>},
{ conditional_operator::not_op, std::binary_negate<bool>} // this seems fishy too, binary_negate is not really what I want :(

除了不能编译之外:

error: expected primary-expression before '}' token

error: expected primary-expression before '}' token

error: expected primary-expression before '}' token

对于三行中的每一行,我应该怎么做?我认为带有第二个虚拟参数的 logical_not 会起作用,当然,一旦我得到它来编译......

编辑:我可以为此使用 lambda 吗?

最佳答案

你真的想要std::function<bool(bool, bool)> , 不是 std::binary_function<bool, bool, bool> .这仅适用于 C++03 中的 typedef 和内容。其次,我只使用 lambda——它们足够短而且更清晰。 std::logical_and并且东西只存在于 C++03 函数对象创建中,我随时都会对它们使用 lambda。

std::map<conditional_operator, std::function<bool(bool,bool)>> conditional_map = 
{
{ conditional_operator::plus_op, [](bool a, bool b) { return a && b; } },
{ conditional_operator::or_op, [](bool a, bool b) { return a || b; } },
{ conditional_operator::not_op, [](bool a, bool b) { return !a; } }
};

等等 - 你指的 not 是什么运算符?因为据我所知,这是一元的。

关于c++ - 需要从枚举(类)到 std::binary_function 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253547/

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