C++ 如何用其他无痛苦的函数替换std::binary_函数?

C++ 如何用其他无痛苦的函数替换std::binary_函数?,c++,templates,c++17,deprecated,legacy-code,C++,Templates,C++17,Deprecated,Legacy Code,我们目前正在使用一些第三方软件包,这些软件包在内部使用一些std::binary\u函数、std::unary\u函数。您可能知道,这些函数在C++14中已经被弃用,现在它们都已从C++17中删除。我们将使用C++17的一些新特性,同时我们不会做一些重大更改,因为这可能会导致代码中的一些不稳定性。我们如何简单地将这些遗留的C++特性(STD::Bialayl函数,…)替换为具有较小痛苦的其他东西。 提前感谢您的帮助。我不知道标准库中存在任何类型,但创建自己的类型并不是什么大问题: templat

我们目前正在使用一些第三方软件包,这些软件包在内部使用一些std::binary\u函数、std::unary\u函数。您可能知道,这些函数在C++14中已经被弃用,现在它们都已从C++17中删除。我们将使用C++17的一些新特性,同时我们不会做一些重大更改,因为这可能会导致代码中的一些不稳定性。我们如何简单地将这些遗留的C++特性(STD::Bialayl函数,…)替换为具有较小痛苦的其他东西。
提前感谢您的帮助。

我不知道标准库中存在任何类型,但创建自己的类型并不是什么大问题:

template<class Arg1, class Arg2, class Result> 
struct binary_function
{
    using first_argument_type = Arg1;
    using second_argument_type = Arg2;
    using result_type = Result;
};

template <typename ArgumentType, typename ResultType>
struct unary_function
{
    using argument_type = ArgumentType;
    using result_type = ResultType;
};
模板
结构二进制函数
{
使用第一个参数\u type=Arg1;
使用第二个参数\u type=Arg2;
使用结果类型=结果;
};
模板
结构一元函数
{
使用参数类型=ArgumentType;
使用结果类型=结果类型;
};
这两个类都只是用户定义功能对象的简单基类,例如:

struct MyFuncObj : std::unary_function<int, bool>
{
    bool operator()(int arg) { ... }
};
struct MyFuncObj:std::一元函数
{
布尔运算符()(int arg){…}
};
允许使用某些标准库内置功能的参数别名,例如
std::not1
std::not1(MyFuncObj())


我想这是因为在C++11之后,lambda主要用于创建函数对象。有了可变模板,创建
not
和其他东西的通用版本非常容易,而不需要
std::not1
std::not2
std::function
?你能展示一些代码来展示你的“痛苦”吗?用
std::function
替换
std::binary\u function
时,我能想到一些问题,尽管不清楚您是什么问题facing@user463035818:
std::function
是一个非常“沉重”的类,包含大量功能和成员数据
std::binary_函数
只有几个typedef。“…它们都已从C++17中删除”--如中所示,它们在C++17中不再需要。正是由于这类问题,标准库实现者通常会继续提供它们。只要您的标准库提供了它们,您就不需要更改任何内容。如果它没有坏,就不要修理它。