사용

2016-11-18 3 views
0

그 표준 : 양단 큐 ++ (10.9+ 대상)사용

#include <deque> 

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

int main() { 
    node n; 
} 

이를 된 libstdc 사용하지 않을 경우 OSX에 연타로 재귀 방법으로 그것을 사용하는 것을 허용하지 않는 것 같다 간단한 코드는 clang으로 컴파일 할 때만 MACOS_DEPLOYMENT_TARGET = 10.8 (libstdC++와 clang 컴파일러가 연결되기 때문에) 컴파일하지만 libcC++ (기본 C++ 대상 10.9 이상)로 컴파일하려고하면 많은 오류가 발생하지만 gcc 4/5 그것은 문제없이 작동합니다 ...

이것은 컴파일러 버그입니까, 아니면 표준이 이것을 허용하지 않습니까? 그것은 컨테이너의 아주 분명한 용도로 보인다 ...

+2

무엇 errors? ..... –

+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; };