У меня есть следующий «основной» шаблон:
template <
template <typename> class S
> struct TT { /*...*/ };
и шаблон, который я хочу использовать с TT
:
template <int N, typename T> struct S1 {};
В частности, я хочу использовать что-токак
TT< S1<5> > t2; // "Invalid template arguments" here
Это своего рода частичное приложение для шаблонов.Я знаю, что Boost.MPL включает в себя такие вещи.Проблема в том, что у меня уже есть некоторый код, использующий TT и шаблоны типа
template <typename T> struct S2 {}; // S3, S4…
, которые передаются в TT.
Итак, вопрос в том, как я могу использовать S1
с TT
с наименьшими изменениями в существующем коде.Если необходимо использовать Boost.MPL, пожалуйста, покажите мне наиболее подходящее решение.