2014-02-16 2 views
2

사용자는 OS의 X에 컴파일 문제를 나에게왔다 :컴파일 오류 :: OS X에 enable_shared_from_this <>

http://fpaste.org/77628/39251593/

명백한을 배제 후, 오히려 그 소리보다 GCC를 사용하고, "오른쪽"표준 라이브러리, 그것은 문제가 표준으로했다 명백하게되었다 :: <> 클래스 선언

클래스 자체의 일부는

class Expression : public std::enable_shared_from_this<Expression> { 
// ... 
}; 
의 선언을했다 enable_shared_from_this https://github.com/kripken/emscripten/issues/270

https://code.google.com/p/alembic/issues/detail?id=315

수있는 사람의 C :

일부 조사는이 엑스 코드/그 소리 자체에 문제가있을 수 있음을 보여줍니다 이걸 모른다고? 또는이를 해결할 방법이 있습니까? 그래서, 문제의 코드는 불필요한이었다 제거 :

코드는 here

편집 위치한 문제의 파일로 here에 위치해 있습니다. 특정 커밋 (r1047)으로 업데이트 된 링크

답변

1

나는 이것이 실행 된 libC++의 버그라고 생각합니다. 잠시 전에이 버그 보고서를 제출했습니다 (http://llvm.org/bugs/show_bug.cgi?id=18843).

shared_ptr에서 const까지의 버전에서 std::enable_shared_from_this에서 파생 된 클래스 버전에 해당 형식에 대한 비 const 포인터가 할당되어 문제가 발생합니다. libstdC++에서이 const은 내부 weak_ptr에 대한 할당을 수행하는 함수 인 std::enable_shared_from_this에서 제거되었지만 libC++에서는 발생하지 않습니다. new A() 단지 포인터 인 경우

std::shared_ptr<A const> ptr(std::const_pointer_cast<A const>(std::shared_ptr<A>(new A()))); 

:

struct A : std::enable_shared_from_this<A> {}; 

int main() 
{ 
    std::shared_ptr<A const> ptr(new A()); 
} 

당신은 뭔가를 수행하여 지금은이 문제를 해결할 수 있습니다 : 다음 코드는 현재의 libC++에서이 오류가 발생합니다 무엇의 예를 보여줍니다 shared_ptr에 들어가려고합니다.

+0

수 있습니다. 내가 뭘 의심하는지 확인하는 건지 환호. – LordAro