Ktoś z publiczności zadał pytanie podczas wykładu „C ++ Standard Library Panel” na CppCon 2016 ( YouTube ) na temat potencjału nazwy experimental
odstraszającej użytkowników od używania czegokolwiek z przestrzeni nazw:
Czy uważacie, że produkcja [zawartość std::experimental
przestrzeni nazw] jest gotowa i czy jest to argument, który można przedstawić, [że] jest to faktycznie produkcja gotowa na następne 3 lata, a może trzeba będzie zmienić kod 3 lata później?
Michael Wong (przewodniczący SG5 i SG14 oraz redaktor Concurrency TS) zadał pytanie jako pierwszy:
Myślę, że w komitecie panuje zgoda co do tego, że jest on praktycznie gotowy do produkcji. Jak powiedziałem wcześniej, w większości przypadków 99% dostaje się do środka. Chcemy mieć pewność, że nie będzie to dla Ciebie przeszkodą w korzystaniu z niej. Możesz zrozumieć, dlaczego chcemy umieszczać duże funkcje, duże grupy funkcji w takim kontekście, aby nie zakłócać reszty całego systemu bibliotecznego, ale także ułatwiać korzystanie z niego. Teraz możesz włączyć GCC z określoną flagą dla Concepts, wiesz, co w rzeczywistości ułatwia segmentowanie go.
Alisdair Meredith (były przewodniczący LWG) kontynuował:
Przyjmę tutaj przeciwne stanowisko. Jedną z rzeczy, które Herb [Sutter] powiedział jako przewodniczący WG21, standardowej grupy, kiedy wyruszyliśmy ścieżką TSes, jest taki, że nie sądził, że TSes odniesie sukces, dopóki nie zawiedliśmy w przedstawieniu czegoś do przodu, ponieważ oznacza, że nie jesteśmy wystarczająco eksperymentalni, nie jesteśmy wystarczająco ambitni w tym, do czego używamy TS. Naprawdę tego chcemyexperimental
być wskazówką, że tak, te rzeczy mogą ulec zmianie, nie jesteśmy do tego zobowiązani i możemy coś źle zrobić. Ma to na celu obniżenie naszej bariery dla rzeczy, które uważamy za tak ambitne i osiągalne, jak tylko możemy [...] Teraz wydaje się, że standard ma trzyletni cykl wydawniczy, powinniśmy być znacznie bardziej ambitni w wprowadzaniu naprawdę eksperymentalnych funkcji do TS i być może szybciej przechodząc do samego głównego standardu. Ale znowu, będzie to dla nas zabawny temat do omówienia na kilku następnych spotkaniach [komitetu ds. Standardów C ++].
Stephan T. Lavavej (opiekun implementacji STL Microsoftu) odpowiedział jako ostatni:
Ważne jest, aby odróżnić eksperymentalność interfejsu od eksperymentalności implementacji, ponieważ kiedy mówisz „gotowe do produkcji”, co to oznacza? Zwykle „gotowe do produkcji”, można by pomyśleć o rozmowie o wdrożeniu. Całkiem możliwe, że implementacja [czegoś w std::experimental
] będzie absolutnie [...] kuloodporna. [...] Coś w rodzaju [...] <random>
nagłówka w TR1, [było] naprawdę, bardzo fajnie w TR1 i mogłeś mieć absolutnie kuloodporną implementację tego, ale okazało się, że interfejs się kręcił zasadniczo [przed wydaniem] C ++ 11 i [...] gdybyśmy wiedzieli wtedy, co robimy teraz, wprowadzenie experimental
byłoby lepszym sygnałem dla ludzi, że „Hej, może nie chcesz posługiwać sięstd::experimental::variate_generator
ponieważ, ha-ha, zniknie w C ++ 11 ”.
Wydaje się więc, że wśród twórców bibliotek standardowych i członków komitetów istnieje pewne pragnienie, aby przynajmniej w przyszłości zawartość std::experimental
przestrzeni nazw miała charakter prawdziwie „eksperymentalny” i nie należy przyjmować za pewnik, że coś std::experimental
będzie uczynić go standardem C ++.
I nie, o ile rozumiem, od dostawców bibliotek standardowych zależy, czy dostarczą implementacje dla różnych funkcji std::experimental
.