的模板調用如果我有類型聲明一樣C++函數指針類型
typedef void (*command)();
template <command c>
void execute() {
c();
}
void task() { /* some piece of code */ }
然後
execute<task>();
編譯和行爲與預期相同。但是,如果我將模板定義爲
template <command c>
void execute() {
command();
}
它仍然編譯。我意外地做了這件事。現在我對第二版預計會做什麼感到困惑。
'command();'創建'typedef'定義的函數*指針*類型的臨時對象。 – Nawaz
調用'execute(command)';?有問題嗎?爲什麼你想要使用這種混合模式? –
這是一個精簡的例子。我真正做的是在這裏:http://stackoverflow.com/a/19611077/2036917關鍵是,該模板允許我有不同的靜態變量的實例。我知道我可以用適當的物體來達到同樣的效果。但是,再次記住一個Arduino只有2K的RAM。因此,這種方法稍微減少了內存佔用。 –