假设我有一个接受各种向量的模板化函数(但由于各种原因我不能在模板参数中提及这一点)。这就是我想要做的:在特定位置插入一个新的默认构造元素,而不知道其类型:
template <typename T>
void foo(T* v) {
v->insert(v->begin() + 5, decltype(v->at(0))());
}
这不起作用,但可以让您了解我正在尝试做什么。我也尝试使用value_type
from std::vector
但我在那里也遇到了问题。有什么想法如何解决这个问题吗?
避开整个“命名类型”业务:
v->emplace(v->begin() + 5);
or
v->insert(v->begin() + 5, {});
您当前的版本无法运行,因为decltype(v->at(0))
是一个引用类型。value_type
如果你正确使用它应该可以工作,但是如果没有看到你在做什么,我不能说它有什么问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)