У меня есть шаблон класса Array
template<typename T, int dimension>
class Array<typename T, int dimension>{
//definition of the class
}
Я хочу написать функцию, не являющуюся членом, чтобы я мог приводить массив к другому типу. Например
Array<int, 2> a;
Array<float, 2> b = cast<float>(a);
Как мне написать эту функцию? Меня больше интересует, как это объявить, а не как реализовать детальный кастинг. Я пробовал
template<template<typename T, int dimension> class Array, typename New_T, int dimension>
Array<typename New_T, int dimension> cast(Array<typename T, int dimension> a){
// detailed implementation of casting, which I do not care for this question.
}
но не может пройти компиляцию.