Действительно ли возможно соответствовать шаблонной основе в шаблонных специализациях?

Я мог, конечно, использовать is_base если базовый класс, где не шаблон. Однако, когда это, я просто не вижу способа в общем соответствовать любому производному типу. Вот основной пример того, что я имею в виду:

#include <boost/mpl/bool.hpp>

template < typename T >
struct test_base
{
};

template < typename T >
struct check : boost::mpl::false_ {};

template < typename T >
struct check<test_base<T> > : boost::mpl::true_ {};

struct test_derived : test_base<int> {};

#include <iostream>
int main() 
{
  std::cout << check<test_derived>::value << std::endl;
  std::cin.get();
}

Я хочу, чтобы это возвратилось true_ вместо false_. Реальный пример имеет как 7 шаблонных параметров, наиболее принявших значение по умолчанию, и использует Повышение. Параметр, чтобы относиться к ним по имени. Для использования is_base Я должен был бы смочь вытащить параметры так или иначе, и я не вижу способ сделать это за исключением объявления внутренних определений типов.

Я думаю, что это невозможно. Смотря быть доказанным неправильным.

5
задан Edward Strange 4 August 2010 в 16:55
поделиться