#include <string>
#define DllExport __declspec( dllexport )
void test1(int * x) {
*x = 23;
}
void test2(int x, unsigned y) {
return;
}
void test3(int x, unsigned y, short z) {
return;
}
void test4(int x, unsigned y, unsigned short z, double * t) {
return;
}
void test5(int * x, unsigned y, unsigned short z, const double * t, const std::string u) {
return;
}
void test6(const double * const x, const std::string & y, std::string && z) {
return;
}
int test7(decltype(&test4)) {
return 0;
}
int test8(decltype(&test7)) {
return 0;
}
int test9(decltype(&test8)) {
return 0;
}
unsigned long ***************** test10(char *& x) {
return nullptr;
}
int test_array(char a[12], int b[12][34], std::string c[12][34][56], double* d[12][34][56][78]) {
return 0;
}
struct Empty {};
int test_array_empty_struct(Empty a[12], Empty b[12][34], Empty c[12][34][56], Empty d[12][34][56][78]) {
return 0;
}
class DllExport A {
public:
A() {}
A(const A &) = delete;
A(A && a) {}
~A() {}
void meth1(int) { }
void meth1(double) { }
void meth1(short, signed char) {}
protected:
void meth2(int) {
return;
}
A & meth2(double) {
return *this;
}
static void meth2(short, signed char) {
return;
}
private:
struct B {
void meth3() {
return;
}
};
B meth4(A *, B &&) {
return B();
}
};