4
爲什麼下面的代碼有效?該結構包含測試測試向量,所以下面的代碼compiles (IDEOne):C++遞歸類型定義
#include <iostream>
#include <vector>
using namespace std;
struct test {
vector<test> a;
};
int main() {
// your code goes here
test t;
if (t.a.size() > 0)
return -1;
else if (t.a[0].a[0].a.size() > 0)
return 1;
return 0;
}
編譯器如何處理結構,這樣是可以測試t.a[0].a[0].a.size()
?有多少次我可以重複.a[0]
?
編輯:此問題已聲稱這是不確定的行爲答案:Are C++ recursive type definitions possible, in particular can I put a vector<T> within the definition of T?
=>這是令人困惑
=>也許我的問題是重複的
對'的std :: VECTOR'默認構造函數不要求模板參數是完全限定的名稱。 – paddy
爲了將事物推得更遠,'struct WTF:std :: vector {};'我用它來構建[Peano的自然數](https://en.wikipedia.org/wiki/Peano_axioms):D –
YSC
(提示: 'operator ++()'只是'{push_back(* this); return * this;}') – YSC