#include #include #include template T& identity (T& v) { return v; } template T** identityPP (T** v) { return v; } template std::vector* getVector(size_t len, const T* ptr) { std::vector* ret = new std::vector(len); for (size_t i = 0; i < len; ++i) (*ret)[i] = ptr[i]; return ret; } std::string* getString(int len, const char* ptr) { return new std::string(ptr, len); } template std::array* getArray(const T* ptr) { std::array* ret = new std::array(); for (size_t x = 0; x < N; ++x) (*ret)[x] = ptr[x]; return ret; } // Explicit instantiations, so they are callable outside this compilation unit. template int** identityPP(int**); template float** identityPP(float**); template int& identity(int&); template float& identity(float&); template std::vector* getVector(size_t, const int*); template std::vector* getVector(size_t, const float*); //typedef std::vector svf_t; //template std::vector* getVector(size_t, const svf_t*); template std::array* getArray(const int*); template std::array* getArray(const float*); //typedef Foo fi42_t; //template std::array getArray(const fi42_t*);