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 替换为任何内容,还希望将 float 和 int 替换为类型名 T 和 U。为什么它认为有两个参数?我该如何解决这个问题?

(对不起,如果这是重复的,我确实很好地寻找了解决方案)

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 回答