Есть ли способ частично привязать шаблон к типам параметров? Например, у меня есть следующий шаблон:Частичная привязка шаблона, создайте новый шаблон как тип
template<typename T, typename Q> struct generic { };
И у меня есть еще один шаблон, который принимает шаблонный класс в качестве параметра, ожидая, чтобы иметь возможность создавать его экземпляры с первым типом:
template<typename T, template<typename> class Impl>
struct wrapper {
Impl<T> foo;
};
Это может принять простой шаблон, например template<typename T>
без изменений. Теперь я хочу частично связать шаблон generic
, указав только Q
и передавая его wrapper
. Создание некоторого синтаксиса, возможно, что-то вроде этого:
template<typename T> bound = generic<T,some_type>;
Я знаю, что может получить почти то, что я хочу с помощью наследования:
template<typename T> bound : public generic<T,some_type> { };
Я надеюсь, хотя, чтобы избежать этого, хотя, как это вызывает проблемы с конструкторами и операторы, определенные в базовом классе.
'template using bound = generic ;'? AKA "template-typedef"? –
@BartekBanachewicz, это выглядит хорошо ... Я не могу его протестировать, так как я на GCC 4.6, который еще не поддерживает его. Вероятно, это означает, что нет более ранней функции, которая делает это. –
Эта функция также известна как * Псевдонимы шаблонов * и в соответствии с [этой диаграммой] (http://gcc.gnu.org/projects/cxx0x.html) она действительно поддерживается с '4.7'. –