我有一个模板功能如下:
template<typename T>
void do_something(T &c) {
decltype(c[0]) tmp;
//...
}
T
可以是数组或容器。这声明tmp作为引用,但我想要一个值类型并且不初始化它(所以我不想做auto tmp = c[0]
)。我怎么能这样做?
答案 0 :(得分:5)
如果只是参考问题,您可以在std::remove_reference
中使用<type_traits>
:
typename std::remove_reference<decltype(c[0])>::type tmp;