class Adaptee
{
public:
    // Interface.
    void operator()(int a, int b, int c) { cout <<a; }
};
class Target
{
public:
    // Interface.
    virtual void operator()(int a) = 0;
};
class Adapter : public Target
{
    // data.
    Adaptee m_adaptee;
public:
    Adapter(Adaptee &adaptee) : m_adaptee(adaptee) {}
public:
    // Interface.
    virtual void operator()(int a) override { m_adaptee(a, 0, 0); }
};
int main(int argc, char *argv[])
{
    auto arr = {1, 2, 3, 4, };
    for_each(arr.begin(), arr.end(), Adapter(Adaptee()));       // 可以和标准算法工作在一起了.
    return 0;
}