如果我有像这样的类型声明
typedef void (*command)();
template <command c>
void execute() {
c();
}
void task() { /* some piece of code */ }
然后
execute<task>();
将编译并按预期运行。但是,如果我将模板定义为
template <command c>
void execute() {
command();
}
它仍然可以编译。我无意中做到了这一点。现在我对第二个版本的预期功能感到困惑。