class Test {
public:
template <class... A2> void print (void(*function)(A2...,float,double)) {
}
};
void test_print (int a, float b, double c) {
}
int main () {
Test test;
test.print<int> (&test_print);
}
Y2xhc3MgVGVzdCB7CiAgICBwdWJsaWM6CiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQTI+IHZvaWQgcHJpbnQgKHZvaWQoKmZ1bmN0aW9uKShBMi4uLixmbG9hdCxkb3VibGUpKSB7CgogICAgfQp9OwoKdm9pZCB0ZXN0X3ByaW50IChpbnQgYSwgZmxvYXQgYiwgZG91YmxlIGMpIHsKCn0KCmludCBtYWluICgpIHsKICAgIFRlc3QgdGVzdDsKICAgIHRlc3QucHJpbnQ8aW50PiAoJnRlc3RfcHJpbnQpOwp9
prog.cpp: In function ‘int main()’:
prog.cpp:14:33: error: no matching function for call to ‘Test::print(void (*)(int, float, double))’
prog.cpp:14:33: note: candidate is:
prog.cpp:3:33: note: template<class ... A2> void Test::print(void (*)(A2 ..., float, double))
prog.cpp:3:33: note: template argument deduction/substitution failed:
prog.cpp:14:33: note: mismatched types ‘float’ and ‘int’