fix partial specialization with many parameters
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11709 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
bd3fddb28c
commit
f825fba4f7
2 changed files with 19 additions and 1 deletions
|
|
@ -91,6 +91,24 @@ namespace Two {
|
||||||
%template(E1_) Two::TwoParm<const int *, int *>;
|
%template(E1_) Two::TwoParm<const int *, int *>;
|
||||||
%template(E2_) Two::TwoParm<int **, int *>;
|
%template(E2_) Two::TwoParm<int **, int *>;
|
||||||
|
|
||||||
|
|
||||||
|
// Many template parameters
|
||||||
|
%inline %{
|
||||||
|
template <typename T1, typename T2, typename T3, typename T4, typename T5> struct FiveParm { void a() {} };
|
||||||
|
template <typename T1> struct FiveParm<T1, int, int, double, short> { void b() {} };
|
||||||
|
%}
|
||||||
|
|
||||||
|
%template(FiveParm1) FiveParm<bool, int, int, double, short>;
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
template <typename T, int N = 0, int M = 0> struct ThreeParm;
|
||||||
|
template <typename T, int N, int M> struct ThreeParm { void a1() {} };
|
||||||
|
template <typename T> struct ThreeParm<T, 0, 0> { void a2() {} };
|
||||||
|
template <typename T, int N> struct ThreeParm<T, N, N> { void a3() {} };
|
||||||
|
%}
|
||||||
|
|
||||||
|
%template(ThreeParmInt) ThreeParm<int, 0, 0>;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// TODO fix:
|
// TODO fix:
|
||||||
%inline %{
|
%inline %{
|
||||||
|
|
|
||||||
|
|
@ -3791,7 +3791,7 @@ cpp_template_decl : TEMPLATE LESSTHAN template_parms GREATERTHAN { template_para
|
||||||
|
|
||||||
Parm *newp = NewParm(ttr, 0);
|
Parm *newp = NewParm(ttr, 0);
|
||||||
if (partialparms)
|
if (partialparms)
|
||||||
set_nextSibling(partialparms, newp);
|
set_nextSibling(parm_current, newp);
|
||||||
else
|
else
|
||||||
partialparms = newp;
|
partialparms = newp;
|
||||||
parm_current = newp;
|
parm_current = newp;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue