使用するインターフェイスを公開するライブラリを使用しています。このライブラリの機能の1つは次のようなものです:
template <int a>
void modify(){}
パラメータを1から10に変更する必要があります。つまり、1から10modify
のテンプレート引数を使用して呼び出します。そのために、このコードを作成しました(コードの基本バージョン、実際のコードははるかに大きい)。
for(int i=0; i<10; i++){
modify<i>();
}
コンパイル時に次のエラーが発生します
error: 'i' cannot appear in constant-expression
インターネット上のいくつかのリンクを調べた後、コンパイル時に評価されないテンプレート引数として値を渡すことができないことがわかりました。私の質問は次のとおりです。1。コンパイラi
がコンパイル時に評価できないのはなぜですか。2. APIインターフェースを変更せずに、達成しようとしている目的を達成するために他に何かありますか?
もう一つやりたいことがあります。VARが機能計算の出力であるmodifyをmodifyとして呼び出します。どうやってやるの?