Чтобы избежать повторения кода, мне нужно сделать что-то вроде этого (в моем реальном коде у меня есть гораздо более сложные типы, подобные T1
и T2
):
template <class T1, class T2>
struct A
{};
template <class T1, class T2>
struct B
{};
template <class X>
struct C
{
using p1 = int;
using p2 = char;
using some = X<p1, p2>;
};
int main()
{
C<A> o1; // must produce C<A<int,char> >
C<B> o2; // must produce C<B<int,char> >
}