のテンプレート呼び出し、私はその後、C++関数ポインタ型
execute<task>();
がコンパイルされます
typedef void (*command)();
template <command c>
void execute() {
c();
}
void task() { /* some piece of code */ }
のような型宣言を持っているし、期待通りに動作している場合。しかし、私がテンプレートを
として定義した場合、template <command c>
void execute() {
command();
}
まだコンパイルされます。私は偶然これをしました。今、私は第2版が何をすると思われるのか混乱しています。
'command();'は、typedefによって定義された関数* pointer * typeの一時オブジェクトを作成します。 – Nawaz
'execute(command)';の呼び出しに何か間違っていますか?なぜこのようなハイブリッドパターンを使いたいのですか? –
これは削除された例です。私が実際にしたことはここにあります:http://stackoverflow.com/a/19611077/2036917ポイントは、テンプレートを使用すると、静的変数の異なるインスタンスを持つことができます。私は適切なオブジェクトで同じことを達成できることを知っています。しかし、Arduinoにはわずか2KのRAMしかないことを再度覚えておいてください。だから、アプローチは少しメモリフットプリントを減らします。 –