C++で実装しようとしていますが、差分差分式はhereと表示されています。C++でvariadicテンプレートとの差分を実装
は、これまでのところ私は、付属しているこの
template<typename F, typename T>
T divdiff(F f, T t1, T t2) {
return (f(t1) - f(t2))/(t1 - t2);
};
template<typename F, typename T, typename... Args>
T divdiff(F f, T tstart, Args... t, T tend) {
return (divdiff(f, tstart, t...) - divdiff(f, t..., tend))/ (tstart - tend);
};
それは罰金コンパイルが、それはこの
double r = divdiff([](double x) { return 2 * x; }, 1.0, 2.0, 3.0);
のような例のためにそれを使用しようとすると、私は次のエラーを得た
note: candidate function not viable: requires 3 arguments, but 4 were provided
T divdiff(F f, T tstart, Args... t, T tend) {``
私のコンパイラはgcc
--prefix =/Library/Developer/CommandLineTools/usr --with-gxx-include-dir =/usr/include/C++/4.2.1 Apple LLVMバージョン8.0.0(clang-800.0)。 42.1)ターゲット:x86_64版 - アップルdarwin15.4.0スレッドモデル: POSIXのInstalledDir:/ライブラリ/開発/ CommandLineToolsは/ usr/binに
それが動作しないと
それは可変長引数が、それは正しいです –
を動作させるために、終わりでなければならないと思われ、可変長引数は、最後の1でなければなりません。 – Danh