Czy możliwe jest określenie, czy biblioteka standardowa C++ obsługuje standard C++ 11 za pomocą dyrektywy preprocesora?Czy istnieje dyrektywa preprocesora do wykrywania biblioteki standardowej C++ 11?
Obecnie pracuję nad projektem, który używa dialektu języka C++ 11, ale ze standardową biblioteką C++ bez obsługi C++ 11 (potrzebuję tego, aby móc łączyć się z nie C++ 11 biblioteki).
Jestem świadomy tego, że mogę przetestować obsługę C++ 11 przy użyciu #if __cplusplus >= 201103L
, ale w moim przypadku będzie to prawda. Muszę wiedzieć o obsłudze standardowej biblioteki C++ dla C++ 11.
Powiązane: http://stackoverflow.com/q/11886288/743214 –
* "Jestem świadomy tego, że mogę przetestować obsługę C++ 11 za pomocą' #if __cplusplus> = 201103L' "* - Nie , nawet nie to. Biorąc pod uwagę, że większość kompilatorów obsługuje jedynie podzbiór C++ 11 (choć może to być duży podzbiór), makro '__cplusplus' jest bezużyteczne. Testowanie pod kątem standardowych funkcji (czy to języka, czy biblioteki) jest nadal nierozwiązanym problemem (chociaż * próby * rozwiązania problemu są już w toku, ponieważ * TemplateRex * wskazuje w swojej odpowiedzi). –
Dla mnie twój problem brzmi, jakbyś potrzebował narzędzia konfiguracyjnego, takiego jak CMake lub autotools. Robią dla ciebie kontrole i generują nagłówek zawierający makra, które możesz ocenić. Jeśli masz tylko bibliotekę, możesz poprosić użytkowników o dostarczenie makr - nadal słabego rozwiązania. – usr1234567