9

C++で困っています。テンプレート内に式を引数として入れられるようにしたいです。これが私のコードです:

#include <vector>
using namespace std;

vector<  ((1>0) ? float : int) > abc() {
}

int main(void){
  return 0;
}

これは私にエラーを与えます:

main.cpp:11:14: エラー: テンプレート引数 1 が無効です
main.cpp:11:14: エラー: テンプレート引数 2 が無効です
main.cpp:11:15: エラー: '{' トークンの前に unqualified-id が必要です

最後に、1 と 0 を何にでも置き換え、型名 T と U に float と int を置き換えられるようにしたいのですが、なぜ 2 つの引数があると考えるのですか? そして、どうすればこれを解決できますか?

(これが重複している場合は申し訳ありませんが、解決策をよく調べました)

4

1 に答える 1

18

使用std::conditional:

#include <type_traits> 
std::vector<std::conditional<(1 > 0), float, int>::type> abc() {}
于 2013-08-08T05:51:51.587 に答える