【发布时间】:2017-05-26 07:20:57
【问题描述】:
假设我有一个模板函数,它接受各种向量(但由于各种原因,我不能在模板参数中提及这一点)。这就是我想要做的:在特定位置插入一个新的、默认构造的元素,而不知道它的类型:
template <typename T>
void foo(T* v) {
v->insert(v->begin() + 5, decltype(v->at(0))());
}
这不起作用,但可以让您了解我正在尝试做什么。我也尝试使用std::vector 中的value_type,但我也遇到了问题。任何想法如何解决这个问题?
【问题讨论】:
-
您应该得到一个错误,希望能描述问题。例如,GCC 说,“错误:引用类型的值初始化”
-
v.insert(v.begin() + 5, decltype(v)::value_type() ); -
@RichardCritten 这行不通,而且工作量太大;我们已经可以使用
T -
“采用各种向量(但由于各种原因我不能在模板参数中提及这一点” 这将有助于指定 what这些原因是。“这不起作用”解释为什么是密切相关的 - 错误是什么。“我也遇到了问题” ... 什么问题?