2016-11-18 44 views
0

似乎性病::雙端隊列不允許未使用的libstdC++(10.9+目標)使用std ::雙端隊列和鏗鏘編譯

#include <deque> 

struct node { std::deque<node> childs; }; 

int main() { 
    node n; 
} 

這時候在遞歸的方式與OSX鐺使用如果我設置MACOS_DEPLOYMENT_TARGET = 10.8(因爲clang編譯器與libstdC++鏈接),但是如果我嘗試使用libC++(10.9+的默認C++目標)進行編譯時會出現很多錯誤,而使用gcc 4/5它工作沒有問題...

這是一個編譯器錯誤或標準不允許這?這似乎是一個相當明顯的使用容器...

+2

什麼錯誤?..... –

+0

請注意,'boost.container'庫中有允許這樣做的容器。 – juanchopanza

回答

0

一般來說,你不應該期望這個代碼編譯。可以肯定,它與任何符合標準的編譯器編譯,你必須在以下或類似的方式之一使用額外的間接級別:

  1. struct node { std::deque<node> *children; };
  2. struct node { std::unique_ptr<std::deque<node>> children; };
  3. struct node { std::deque<node*> children; };