使用STL似乎必需的一件事是指定本地函数的方法。
我通常会提供的许多功能无法使用STL函数对象创建工具(例如bind)来创建,我必须手动滚动函数对象。

由于C++标准禁止将本地类型用作模板实例化中的参数,因此我能够使用的最好的方法是创建一个小型库(仅显示相关部分)

// library header
class MyFunctionBase<R,T>
{
 public:
   virtual ~MyFunctionBase();
   virtual R operator()(const T &) const=0;
};


class  MyFunction<R,T>
{
    MyFunctionBase<R,T> *b;
 public:
    ~MyFunction()
    {
       delete b;
    }
    virtual R operator()(const T &) const
    {
        return (*b)(T);
    }
};


// source file
....

    class func: public MyFunctionBase  ...
    std::stl_alg(....    MyFunction(new funct));

在我看来,这始终是无稽之谈。我想对ISO委员会的成员也是如此,并在C++中增加了一个lambda。

同时,编译器如何解决此问题? (尤其是Windows编译器。)

可能会澄清一点的更正。
变更日志:
11月2
替换以澄清
由于C++标准禁止将本地类用作函数对象

最佳答案

Boost.Bind,Boost.Function和Boost.Lambda是您的 friend 。

10-04 13:46