C ++如何在不同返回类型的重载运算符上使用std :: function

汤姆

我正在尝试将标准std::function与自定义重载运算符一起使用但是std::logical_and在这种情况下,无法Test通过string参数向我的班级申请课程

class Test {
public:
    std::string value;

    Test(std::string cvalue) : value(cvalue) {}

    std::string operator&& (const std::string& rhs) const {
        if (rhs == value) {
            return "true";
        }
        return "false";
    }
};

int main() {
    Test test("hey");
    std::string out = std::logical_and<std::string>()(test, "hey");
    std::cout << out << std::endl;
    return 0;
}

实现此目标的正确方法是什么?我的预期输出是"true"

贾罗德42

您需要使用std::logical_and<>允许对参数和返回类型进行推导:

std::string out = std::logical_and<>()(test, "hey");

演示版

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章