Я пытаюсь обработать вложенные шаблоны в c ++ и даже не уверен, возможно ли это. Смысл этого в том, чтобы скомпилировать проверку типа времени по производным n-го порядка. Следующий код является лишь примером некоторых более сложных вещей, которые я пытаюсь сделать, но решение следующего экстраполирует. Вот мой базовый случай:
struct XAxis {};
struct YAxis {};
template<typename T>
class Deriv {
public:
double a;
Deriv(double in_a) : a(in_a) {};
}
template<>
class Deriv<XAxis> {
public:
double a;
Deriv(double in_a) : a(in_a) {};
double x() {
return a;
}
}
template<>
class Deriv<YAxis> {
public:
double a;
Deriv(double in_a) : a(in_a) {};
double y() {
return a;
}
}
Затем работает следующее:
Deriv<XAxis> xvel{1.0};
std::cout << xvel.x() << std::endl;
Затем я хочу иметь возможность сделать следующее, но я не уверен, как это реализовать:
Deriv<Deriv<YAxis>> yacc{1.0};
std::cout << yacc.y() << std::endl;
Как мне это сделать?