Я мог, конечно, использовать 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
Я должен был бы смочь вытащить параметры так или иначе, и я не вижу способ сделать это за исключением объявления внутренних определений типов.
Я думаю, что это невозможно. Смотря быть доказанным неправильным.