나는 프로젝트는 현재 사용하는 C++11/14 지만,그것은 필요와 같은 뭔가가는 std::파일 시스템만 사용할 수 있는 C++에서 17,따라서 나는't 있는 기회를 현재 그것을 사용합니다. 나는,그러나는's 내에서 사용할 수 있는 현재 컴파일러로
std::실험::파일 시스템`. 그것은 좋은 아이디어를 사용하여 실험적인 기능을 가정하면,나는 미래에는 무언가를 추가한다:
#ifdef CXX17 //if this is C++17
std::filesystem::something ...;
#else
std::experimental::filesystem::something ...;
#endif
나의 관심사가:
*1. 은 그것을 보는 모두 준수하는 컴파일러가 동일한 실험적인 기능이?
2. 은 실험적인 기능을 하는 경향이 큰 변화는 그들 신뢰할 수?
어쩌면이's 에 더 많은 것들에 대해 궁금해. 왜 또 내가 그들을 사용하지 않? 나는'm 란 새로운 프로젝트 그리고 don't know what 을 결정합니다.
- 은 그것을 보는 모두 준수하는 컴파일러가 동일한 실험적인 기능이?
No,실험적인 기능은 선택사항입니다.
- 은 실험적인 기능을 하는 경향이 큰 변화는 그들 신뢰할 수?
Yes,C++위원회도록 결정할 수 있습니다 포기하는 기능 또는 과정에서의 표준화를 결함이 올 수 있는 것이 강제로 기능을 변경합니다.
일반적으로,그's 좋은 아이디어에 의존하는 실험적인 기능입니다. 실험적인 기능을 정확하게 어떤 단어를 말한다(즉,실험).
누군가가 관객들로부터 질문을 중"C++표준 라이브러리 위원회"에서 이야기 CppCon2016([유튜브][1])에 대한 잠재적인 이름에 대한 실험을 놀라게 사용자가 사용하여 아무것도 내의 네임스페이스:
너희들은 고려[의 내용을
std::실험적인
네임스페이스]제작 준비가 되고 그는 인수 만들 수 있습니다,[그]그's 효과적으로 생산 준비가 다음에 대한 3 년,어쩌면 당신은 코드를 변경하는 3 년 후,어쩌면?
마이클 왕(의자의 SG5 및 sg14 사고의 편집 Concurrency TS)를 받았는데 첫 번째 질문:
가 있다고 생각's 강력한 합의에서 위원회는 그것은 실질적으로 생산을 준비합니다. 내가 전에 말했듯이,대부분의 경우 99%의 그것을 얻기에 떨어졌다. 우리가 원하는지 확인하는's 에 장애물이 되지 않습에 대한 당신이 그것을 사용합니다. 을 이해할 수 있는 왜 우리를 넣어 큰 특징이어,다리미/다리미판의 기능,이러한 맥락에서,그래서는't 해의 나머지 전체 라이브러리는 시스템,하지만 그것 또한 그것이 쉽게 당신이 그것을 사용합니다. 지금를 설정할 수 있습 GCC 특정 플래그를 위한 개념을,당신이 알고있는 그 실제로 그것을 만드신 세그먼트로 그것이다.
Alisdair 러(전자 LWG)다음에 따라:
I'm 가 반대로 여기에 위치. 는 것 중의 하나 허브[Sutter]했으로 소집의 WG21,표준 그룹을 때,우리는 설정의 경로를 아래로 tse 를 배정은,그는't 생각하는 tse 를 배정이 있을 것이 성공할 때까지 우리는 실패했을 무언가를 가지고,앞으로 그것이 의미하기 때문에 우리는'다시되지 않는 실험,충분히 우리는'다시되지 않는 야심이 충분에서 무엇을 우리는'다시 사용하여 tse 를 배정한다. 우리가 정말 하고 싶다는
실험
을 힌트는 물론,이러한 것들은 변경 될 수 있습니다,우리는'지 다시 바인딩하는 것,그리고 우리는 얻을 수 있는 것이 잘못입니다. 이것은 낮은 우리의 장벽한 것을 우리는 것으로 야심찬 도달 할 수 있는[...]이 표준을 것으로 보인 세 년 릴리스 사이클,우리는 훨씬 더 많은 야심에 둬 정말로 실험적인 기능으로 TS 이며,아마도 발전하는 것이 더 빠르게 메인 표준다. 그러나 다시,이것은 재미있는 주제는 우리가 논의에서 다음 몇 가지[C++표준위원회]니다.
스테판 T.Lavavej(관리자의 Microsoft's STL 구현)는 마지막 응답:
It's 의 중요한 구별을 하는 사 experimentalness 의 인터페이스와 experimentalness 의 구현하기 때문에,당신이 말할 때"생산 준비를",무슨 뜻입니까? 일반적으로,"생산 준비를",당신이 생각하는 것에 대해 이야기의 구현입니다. It's 가능한한 구현[의 무언가에서
std::실험
]절대적으로[...]bulletproof. [...]무언가가 다음과 같[...]는<random>
헤더에서 TR1,[그것이 정말,정말 좋은 에 TR1,그리고 당신을 가질 수 있었던 절대적으로 탄알 증거의 구현하는 이 인터페이스가 휘저어 실질적으로[하기 전에 릴리스]C++11[...]는 경우에 우리가 알고 있던 그때로 돌아가 우리가 지금 하는 일에 넣고,는 실험이었을 것은 더 나은 사람들에게 신호를,"Hey, 어쩌면 당신은 don't 을 사용하고 싶std::실험::variate_generator
기 때문에,하하,그's 가 사라집에서는 C++11".
그래서 거의 없는 것 같아 어떤 욕구 가운데 표준 라이브러리 개발자와 위원회 위원에서 미래에는 최소한의 내용은std::실험적인
네임스페이스이어야 진정한"실험"자연 속에서,그리고 그것은 당연한 것에 뭔가가std::실험적인
것으로 C++표준입니다.
그리고,지금까지 내가 이해,그것은 표준 라이브러리의 공급 업체 여부로 그들이 구현을 제공해 다양한 기능을 이내에std::실험
.
"실험"은 약간의 과장된 용어입니다. 은시
라이브러리에서 유래를 향상에 갔을 통해 몇 가지 반복기,제출되기 전에 ISO.
그러나,ISO 표준은 의도적으로 very 보수적입니다. 호출하면 그것은 실험적인 의미 ISO 명시적으로는't 는 약속을 지명할 것이 안정 될 수 있다;'s 풍부하게 명확하게 당신이 필요합니다 다시-주소 코드에 약간의 시간이 미래입니다. 그러나 아는 ISO,it's 가능성이있을 것이라는 지도 방법이다.
으로 사이의 호환성을 위해 컴파일러,그것을 기대해야 합리적이다. 그러나 있을 것이 모퉁이의 경우(Windows-드라이브를 상대 경로에 대한 인스턴스),그리고는's 유를 정확하게 미래의 표준을 깰 수도 있습니다 당신의 기존의 코드입니다. 이상적으로,그것은 당신이 코드의 경우에만 의존에서는 모서리,그러나는's 지 않을 보장합니다.
어쩌면이's 에 더 많은 것들에 대해 궁금해.
고려해야 할 몇 가지 포인트:
는 방법-멀티플랫폼은 귀하의 프로젝트가 있습니까? 이 하나만 있으면 컴파일이 참여,다음을 조사할 수 있습의 구현 및 트랙 기록을 결정합니다. 또는 그들에게 물어!
-얼마나 큰 codebase? 어떻게 큰 영향을 것입의 변화는?
-어떻게 근본적인 프로젝트는 기능을 제공하는 API/도서관/기능이? -대안은 무엇인가?
-사용 실험적인 기능을 적용하는 코드를 수정/때는 경우 표준화된다. 수도 있으로 쉽게 삭제하실험::
,또는 하드로 강제 해결 방법이 있습니다.
-추가하는 추상화 계층(서 은 코멘트)이 있습니다. 는 경우 실험적인 기능을 변경하고 다시 쓰고 있다. 을 위한 표준 기능,그것이 과잉이 될 수 있(std::파일 시스템은 이미 추상화 계층을...).
-다른 API 를 사용/라이브러리입니다. 같은 질문:성숙? 견고? 안정성? 휴대성? 의 쉽게 사용하나요? 니다.
-의 경우에는 std::파일 시스템(또는 네트워킹 TS),이 부스트::파일 시스템(resp. 부스트::asio)에 대한 대안으로 대체 또는 경우에는실험
오류가 발생하거나 desappears.