#include <algorithm>
#include <iostream>

class sig
{
public:
    sig()
    {
        struct Functor
        {
            Functor() : value(0) {};
            int operator ()() { return value++; };
            int value;
        };
        std::generate(p_list, p_list + 4, Functor());
    }

    int p_list[4];
};

int main(int argc, char **argv)
{
	sig a;

	for (int i = 0; i < 4; ++i)
	{
		std::cout << a.p_list[i] << ' ';
	}

	return 0;
}