Для иллюстрации:
struct MyFunc {
template <size_t N>
void doIt() {
cout << N << endl;
}
};
template <typename Func>
struct Pass123ToTemplateFunc {
static void pass(Func f) {
f.doIt<123>(); // <-- Error on compile; is there a way to express this?
}
};
int main() {
Pass123ToTemplateFunc<MyFunc>::pass(MyFunc());
return 0;
}
Это в значительной степени синтаксическое любопытство; есть ли в языке способ выразить это без передачи аргументов самой функции doIt
? Если нет, ничего страшного в этом нет, и я уже хорошо знаю, как можно изящно обойти это, поэтому нет необходимости предлагать альтернативные решения. (Другими словами, я приму ответ «нет», если это правда. :-P)