swig/Examples/test-suite/template_namespace_forward_declaration.i
William S Fulton 54726b9d09 Fix using declarations and templates. %template was putting the
instantiated template into the global namespace instead of the namespace
of the template definition. This fixes regression in swig-2.0.5 copying
the std::pair typemaps which occurs with a 'using std::pair'
declaration. This also fixes lots of other using declarations of
template problems (template forward declarations. combinations
using directives).

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13504 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2012-08-04 20:24:22 +00:00

38 lines
802 B
OpenEdge ABL

%module template_namespace_forward_declaration
%inline %{
namespace Space1 {
namespace Space2 {
template<typename T> struct XXX;
template<typename T> struct YYY;
}
template<typename T> struct Space2::YYY {
T yyy(T h) {
return h;
}
};
template<typename T> struct Space1::Space2::XXX {
T xxx(T h) {
return h;
}
};
void testXXX1(Space1::Space2::XXX<int> xx) {
}
void testXXX2(Space2::XXX<int> xx) {
}
void testXXX3(::Space1::Space2::XXX<int> xx) {
}
void testYYY1(Space1::Space2::YYY<int> yy) {
}
void testYYY2(Space2::YYY<int> yy) {
}
void testYYY3(::Space1::Space2::YYY<int> yy) {
}
}
%}
%template(XXXInt) Space1::Space2::XXX<int>;
%template(YYYInt) Space1::Space2::YYY<int>;