Для иллюстрации:
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)