1*99451b44SJordan Rupprecht #include <functional> 2*99451b44SJordan Rupprecht #include <stdlib.h> 3*99451b44SJordan Rupprecht 4*99451b44SJordan Rupprecht template<typename ElemType> alloc(size_t count,std::function<ElemType (size_t)> get)5*99451b44SJordan RupprechtElemType* alloc(size_t count, std::function<ElemType(size_t)> get) 6*99451b44SJordan Rupprecht { 7*99451b44SJordan Rupprecht ElemType *elems = new ElemType[count]; 8*99451b44SJordan Rupprecht for(size_t i = 0; i < count; i++) 9*99451b44SJordan Rupprecht elems[i] = get(i); 10*99451b44SJordan Rupprecht return elems; 11*99451b44SJordan Rupprecht } 12*99451b44SJordan Rupprecht main(int argc,const char * argv[])13*99451b44SJordan Rupprechtint main (int argc, const char * argv[]) 14*99451b44SJordan Rupprecht { 15*99451b44SJordan Rupprecht int* data = alloc<int>(5, [] (size_t idx) -> int { 16*99451b44SJordan Rupprecht return 2 * idx + 1; 17*99451b44SJordan Rupprecht }); 18*99451b44SJordan Rupprecht return 0; // break here 19*99451b44SJordan Rupprecht } 20*99451b44SJordan Rupprecht 21