在延續我的問題here:使用類作爲模板參數的STL類前進decleration
我知道正向減速後如
class Foo;
我可以聲明一個變量Foo*
或Foo&
,但不是Foo
,如果我有一個模板類Bar<T>
其中只有T*
和T&
裏面它然後相同的規則將適用於Bar<Foo>
(即我只需要一個向前減速我n爲了編寫Bar<Foo>
)。
我的問題是,STL類是否保證這樣的事情,他們只包含引用和模板類型的指針。我測試了這一點:
class A;
std::vector<A> b;
與VS2010的STL實現,它編譯,但我不知道這是不是適用於所有STL容器,也不如果這只是方式的MS的STL實現是或如果它是標準的一部分。
即使實例化僅僅是聲明? –
@DietmarKühl我不確定標準對此有何評論。它可能在技術上屬於UB,儘管不太可能以任何惡毒的方式表現出來。但這是猜測。 – juanchopanza
'vector'(至少在VS2010中)不*要求完整的類型,就像我在問題中證明的那樣,所以這必須至少有些不準確。 – baruch