C++ STL容器不允許用不完整類型實例化;這是未定義的行爲。欺騙以允許模板中的不完整類型?
這是一個有效的「訣竅」來解決這個限制嗎?或者這個技巧還有未定義的行爲?
#include <vector>
template<template<class, class> class Vector = std::vector>
struct my_incomplete_vector
{
struct Element;
// Element is incomplete here, but does it matter anymore?
typedef Vector<Element, std::allocator<Element> > type;
struct Element { typename type::iterator value; };
};
int main()
{
my_incomplete_vector<>::type v;
v.resize(1);
// this isn't normally possible without incomplete types
v[0].value = v.begin();
return 0;
}
您不「將容器存儲」。您將* objects *存儲在容器中。 –
@KerrekSB:我解決了,但你的意思? – Mehrdad
這個問題是空洞的,因爲它是......爲什麼天空由磚等製成 –