У меня есть класс, ожидающий шаблон с двумя параметрами, например:
template<template <class, class> class TwoParamsClass>
class Test
{};
также у меня есть такой класс:
template<int a, class A, class B>
class ThreeParamsClass
{};
Мне нужен адаптер, который устанавливает первый int-параметр «ThreeParamsClass», чтобы иметь возможность использовать их в классе Test.
Вот мое частичное решение (и проблема с ним).
template<int a>
struct Alias
{
template<class A, class B>
struct Type
{
typedef ThreeParmamsClass<a, A, B> Type2;
};
};
и затем я называю Test следующим образом:
Test<Alias<1>::Type>
(конечно, внутри Test мне нужно взять параметр и получить тип :: Type2)
Но проблема в том, что после этого мне нужно обернуть тестовый класс примерно так:
template<int n>
struct Wrap
{
typedef Test<Alias<n>::Type> WrappedTest;
};
но я получаю эту ошибку:
ошибка: несоответствие типа / значения при
аргумент 1 в списке параметров шаблона
для шаблона
класс T> тест класса '
Это странно, потому что это прекрасно работает:
template<int n>
struct Wrap
{
typedef Test<Alias<1>::Type> WrappedTest;
};
Я надеюсь, что будет ясно, я подумал сделать два вопроса по этому вопросу, но я думаю, что лучше задать второй в контексте первого.
Спасибо