我遇到了C ++问题。我希望能够将一个表达式放在模板中作为参数。这是我的代码:
#include <vector>
using namespace std;
vector< ((1>0) ? float : int) > abc() {
}
int main(void){
return 0;
}
这给了我错误:
main.cpp:11:14:错误:模板参数1无效
之前预期的unqualified-id
main.cpp:11:14:错误:模板参数2无效
main.cpp:11:15:错误:在'{'token
最后,我希望能够替换1和0的任何内容以及typename T和U的float和int。为什么它认为有两个参数?我该如何解决这个问题?
(对不起,如果这是重复的,我确实很好寻找解决方案)
答案 0 :(得分:18)
使用std::conditional
:
#include <type_traits>
std::vector<std::conditional<(1 > 0), float, int>::type> abc() {}