У меня есть набор типов, связанных взаимно-однозначным отношением, например:
TypeA ---> Type1
TypeB ---> Type2
TypeC ---> Type3
Я знаю эти отношения во время компиляции.
Затем у меня есть класс шаблона, который зависит от этих двух типов:
template<class T1,class T2>
class MyClass
{
T1 foo;
T2 bar;
};
Теперь пользователь моей библиотеки будет вводить что-то вроде:
MyClass<TypeA,Type1> x;
Это неудобно, потому что существует зависимость между двумя типами, и она должна Пользователю достаточно указать только первый тип.
Кроме того, смешивание двух типов не должно быть возможным:
MyClass<TypeA,Type2> y; //it should not compile
Я не очень хорошо знаком с метапрограммированием шаблонов, у меня сложилось впечатление, что это выполнимая задача, но я могу ошибаться.
Количество задействованных типов велико, однако я рад запустить сценарий для генерации кода, если это необходимо.
Знаете ли вы, возможно ли это, или я зря трачу время? У вас есть идеи указать мне верное направление?