template <class... A1>
class Test {
public:
template <class... A2>
struct inner {
void print (void(*function)(A2...,A1...)) {
}
};
};
void test_print (int a, float b, double c) {
}
int main () {
Test<float,double>::inner<int> test;
test.print(&test_print);
}
dGVtcGxhdGUgPGNsYXNzLi4uIEExPgpjbGFzcyBUZXN0IHsKcHVibGljOgogICAgdGVtcGxhdGUgPGNsYXNzLi4uIEEyPgogICAgc3RydWN0IGlubmVyIHsKICAgICAgICB2b2lkIHByaW50ICh2b2lkKCpmdW5jdGlvbikoQTIuLi4sQTEuLi4pKSB7CiAgICAgICAgfQogICAgfTsKfTsKCnZvaWQgdGVzdF9wcmludCAoaW50IGEsIGZsb2F0IGIsIGRvdWJsZSBjKSB7Cn0KCmludCBtYWluICgpIHsKICAgIFRlc3Q8ZmxvYXQsZG91YmxlPjo6aW5uZXI8aW50PiB0ZXN0OwogICAgdGVzdC5wcmludCgmdGVzdF9wcmludCk7Cn0=