#include <iostream>
#include <algorithm>
typedef char byte;
typedef unsigned char ubyte;
template<class T>
class CGenerate
{
T counter;
public:
CGenerate() : counter(0)
{ }
T operator()()
{
return ++counter;
}
};
template<class T>
void Display(T elem)
{
int i = elem;
std::cout << i << std::endl;
}
int main()
{
byte arrTest[10];
ubyte uarrTest[10];
std::generate(arrTest, arrTest + 10, CGenerate<byte>());
std::generate(uarrTest, uarrTest + 10, CGenerate<ubyte>());
std::cout << "arrTest (byte):" << std::endl;
std::for_each(arrTest, arrTest + 10, Display<byte>);
std::cout << std::endl << "uarrTest (ubyte):" << std::endl;
std::for_each(uarrTest, uarrTest + 10, Display<ubyte>);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdHlwZWRlZiBjaGFyIGJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Ynl0ZTsKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIENHZW5lcmF0ZQp7CiAgICBUIGNvdW50ZXI7CnB1YmxpYzoKICAgIENHZW5lcmF0ZSgpIDogY291bnRlcigwKQogICAgeyB9CiAgICBUIG9wZXJhdG9yKCkoKQogICAgewogICAgICAgIHJldHVybiArK2NvdW50ZXI7CiAgICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIERpc3BsYXkoVCBlbGVtKQp7CiAgICBpbnQgaSA9IGVsZW07CiAgICBzdGQ6OmNvdXQgPDwgaSA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkKewogICAgYnl0ZSBhcnJUZXN0WzEwXTsKICAgIHVieXRlIHVhcnJUZXN0WzEwXTsKICAgIHN0ZDo6Z2VuZXJhdGUoYXJyVGVzdCwgYXJyVGVzdCArIDEwLCBDR2VuZXJhdGU8Ynl0ZT4oKSk7CiAgICBzdGQ6OmdlbmVyYXRlKHVhcnJUZXN0LCB1YXJyVGVzdCArIDEwLCBDR2VuZXJhdGU8dWJ5dGU+KCkpOwogICAgc3RkOjpjb3V0IDw8ICJhcnJUZXN0IChieXRlKToiIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Zm9yX2VhY2goYXJyVGVzdCwgYXJyVGVzdCArIDEwLCBEaXNwbGF5PGJ5dGU+KTsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGwgPDwgInVhcnJUZXN0ICh1Ynl0ZSk6IiA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmZvcl9lYWNoKHVhcnJUZXN0LCB1YXJyVGVzdCArIDEwLCBEaXNwbGF5PHVieXRlPik7CiAgICByZXR1cm4gMDsKfQo=