template <typename T>
struct Colordata
{
public:
T *data;
unsigned long size;
unsigned long length;
template <size_t N>
Colordata(T (&arr)[N])
{
length = N;
size = sizeof(arr);
T dataArr[length];
for (int i = 0; i < N; i++)
{
dataArr[i] = arr[i];
}
data = dataArr;
}
template <typename TCast>
operator TCast() const
{
TCast dataCastTmp[length];
for (int i = 0; i < length; i++)
{
dataCastTmp[i] = (TCast)data[i];
}
return Colordata<TCast>(dataCastTmp);
}
};
int main(int argc, char const *argv[])
{
int arr[] = {12, 434, 54};
auto a = Colordata<int>(arr);
auto b = (float)a;
return 0;
}
When I tried to convert Struct<typename> to Struct<another typename> another typename doesn't exist. I think so 'cos I get error in the compiler log:
no matching function for call to «Colordata::Colordata(float [((const Colordata*)this)->Colordata::length])»
Is there any way to casting template struct to template struct?
float, not toColordata<float>. - ThomasColordata<TCast> convert()(without operator). Same error. - Wusiki JeroniiColordata<float>can't be called withlengthasN: gcc.godbolt.org/z/vGWsrdGMd - Simon Kraemer