Added variadic '...' syntax for inheritance introduced in C++0x.
Added sizeof... syntax introduced in C++0x. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@11467 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
85ae38ccee
commit
2e01562965
2 changed files with 107 additions and 11 deletions
|
|
@ -1,8 +1,67 @@
|
|||
/* This testcase checks whether Swig correctly parses and generates the code
|
||||
for variadic templates. This covers the variadic number of arguments inside
|
||||
the template brackets, new functions sizeof... and multiple inheritance
|
||||
using variadic number of classes.
|
||||
*/
|
||||
%module cpp0x_variadic_templates
|
||||
|
||||
////////////////////////
|
||||
// Variadic templates //
|
||||
////////////////////////
|
||||
%inline %{
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
template<typename... Values>
|
||||
class tuple {
|
||||
class MultiArgs {
|
||||
};
|
||||
|
||||
class MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>> multiArgs;
|
||||
|
||||
%}
|
||||
|
||||
// TODO
|
||||
//%template (MultiArgs) MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>>;
|
||||
|
||||
////////////////////////
|
||||
// Variadic sizeof... //
|
||||
////////////////////////
|
||||
%inline %{
|
||||
template<typename ...Args> struct SizeOf {
|
||||
static const int size = sizeof...(Args);
|
||||
};
|
||||
%}
|
||||
|
||||
// TODO
|
||||
//%template (SizeOf) SizeOf<int, int>;
|
||||
|
||||
//////////////////////////
|
||||
// Variadic inheritance //
|
||||
//////////////////////////
|
||||
%inline %{
|
||||
class A {
|
||||
public:
|
||||
A() {
|
||||
a = 100;
|
||||
}
|
||||
|
||||
int a;
|
||||
};
|
||||
|
||||
class B {
|
||||
public:
|
||||
B() {
|
||||
b = 200;
|
||||
}
|
||||
int b;
|
||||
};
|
||||
|
||||
template <typename... BaseClasses> class MultiInherit : public BaseClasses... {
|
||||
public:
|
||||
MultiInherit(BaseClasses&&... baseClasses) : BaseClasses(baseClasses)... {}
|
||||
};
|
||||
%}
|
||||
|
||||
// TODO
|
||||
//%template (MultiInherit) MultiInherit<A,B>;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue