2016-12-11 1 views
6

Xcode 버전 8.1에서 C++을 사용하고 있습니다. boost::any의 기능을 사용할 필요가 있지만, Boost의 일부를 우리 프로젝트에 끌어 넣는 것에 강하게 반대합니다. (제발 논쟁하지 마십시오).C++ 17 'any'with Xcode 8.1

나는 std::any이 "C++ 17로 병합 됨"here임을 알 수 있습니다.

내 Xcode 8.1 프로젝트에서 사용하고 싶습니다. 나는 프로젝트에서 사용자 정의 플래그로 -std=c++1z을 사용해 보았지만 헤더를 찾을 수없는 것 같습니다.

내 Xcode 프로젝트에서 std::any 또는 std::experimental::any을 어떻게 사용할 수 있습니까?

구현에서 적절한 헤더를 다운로드하여 프로젝트의 소스 코드에 넣을 수 있습니까? 또는, Xcode/Clang/C++의 제 버전에서 현재 실제로 사용할 수 있습니까?

+0

Xcode는 IDE입니다. 컴파일러가 함께 제공되지만 컴파일러를 사용할 필요는 없습니다. – Yakk

+2

나는 그것을 이해하지만 바닐라 Xcode 8.1 설치를 사용하고자하며 기본 컴파일러입니다. Xcode는 C++ 구현이 아니므로 역시 이해합니다. Xcode 사용자로서 기본적으로 사용 가능한 C++ 구현을 사용하고 싶습니다. –

+1

나는이 질문에 대답하는 것에 강력히 반대한다. 아닙니다. "프로젝트의 소스 코드에 포함시킬 수 없습니다." 당신은 자신의 삶을 가능한 복잡하고 어렵게 만드는 길을 떠나고 있습니다. 나는 그것을지지하지 않을 것이다. –

답변

6

"기본 Xcode 컴파일러 [[any을 지원하지 않습니다]"라고 말하면서 동시에 any을 지원하도록 요청할 수는 없습니다. 다른 컴파일러 버전에도 표준 라이브러리 헤더를 함께 사용할 수 없습니다.

할 수 있습니다 중 하나 std::any 또는

  • 다른 any -like 유형을 제공 제 3 자 라이브러리를 사용합니다

    • 사용 컴파일러 버전.
  • 2

    설치 설정에 C++ 17 표준이 없습니다. std::any 당신이 원하는 것을 최소한 실험적으로 지원하는 컴파일러를 얻지 않는 한, 당신이 이용할 수없는 것입니다.

    Clang Cxx Status

    당신은 아마 boost::any를 사용하여 훨씬 더 행운이있을 것이다.

    제 3 자 라이브러리를 사용하지 않으려는 경우 실제로는 any을 만드는 것이 그렇게 어렵지 않습니다. 나는 바퀴의 재발 명을 권장하지 않지만이 경우에는 그리 어렵지 않습니다.

    Here's a SO question with an answer showing a way to do 'any'.

    2

    새 유형을 타사 라이브러리를 통해 std에 삽입하는 것은 불법입니다. 컴파일러를 업그레이드하거나 컴파일러에서 지원하는 별개의 std 라이브러리를 얻거나 다른 네임 스페이스에 any을 제공하는 타사 라이브러리를 사용하거나 직접 작성할 수 있습니다.

    첫 번째로 대답하지 않았습니다.

    xcode는 컴파일러가 실제로 무엇인지 광고하지 않으므로 두 번째 것은 어렵습니다. 일반적으로 clang-llvm 파생 된 컴파일러에서 작동하는 두 가지 공통 std 라이브러리가 있습니다. libC++ 및 libstdC++. 그런 종류의 스왑은 다른 기능이 원하는 기능을 가지고 있어도 매우 비싼 경향이 있습니다.

    세 번째는 기본적으로 "use boost"또는 이와 동등한 것입니다.

    마지막으로 어렵지 않습니다. 비슷한 정도의 복잡성을 쓰는 것에 기반한 며칠간의 작업 (주로 버그 이후 사실)은 "충분히 좋음"으로 충분하다고 가정합니다 (즉, 이상적인 예외 보장에 걸리지 않거나 정확하게 일치하는 표준 등). 구현은 자연스럽게 완벽에 접근하는 쌍곡선의 노력이 필요합니다.

    2

    Xcode 9.0 베타를 다운로드 할 수 있습니다 (https://developer.apple.com/download/). C++ 17 플래그 옵션을 지원합니다.

    +1

    예 !!! 이것은 좋은 소식입니다. –

    +0

    @Zammbi 제공 할 수있는 링크 –

    +0

    Apple 개발자에게 로그인해야합니다. https://developer.apple.com/download/ 현재 베타 5입니다. 최종 버전을 출시하기 전에 너무 길지 않아야합니다. – Zammbi