如何查找STL版本

How to find out the STL version

本文关键字:STL 版本 查找 何查找      更新时间:2023-10-16

我被要求向某人提供我正在使用的STL版本。不幸的是,我不知道如何获得这个,也没能在网上找到任何东西!

我正在Ubuntu上工作,如果这有区别的话,gcc 4.8.4。

据我所知,没有所谓的STL版本。有不同的C++版本和编译器版本支持这些C++版本。

例如,在Linux上,您通常将程序链接到libstdc++.so(包括STL实现),并且此共享库随g++版本而更改。

然而,在Linux上,如果您真的想知道libstdc++的版本,可以尝试使用readelf并解析输出(这不是一个好方法)。

我知道这个问题很老了,但谷歌直接把我带到了这里。我遇到了和OP一样的问题,想知道我使用的C++编译器支持哪个STL版本。

从本质上讲,cppreference.com有一个关于编译器支持的部分。表中列出了哪些编译器支持C++X等。;就我而言,我对GCC感兴趣。我在Ubuntu 18.04 LTS上工作,目前从2018年1月15日开始发布GCC 7.3.0

本质上,我检查了编译器版本,例如:

user-home$ g++ -v
[...]
gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)

然后该表指出GCC 7.3.0支持C++17(详细说明了哪些功能是完全支持的)。

PS。还有一些链接指向特定的编译器版本,同样是GCC,以及特定的版本,如GCC 7.3.0。

没有通用的STL版本定义,但每个__cpp_lib功能都有一个数字。

请参阅您的<version>标题和https://en.cppreference.com/w/cpp/feature_test

例如

#if defined(__cpp_lib_list_remove_return_type) && 
    __cpp_lib_list_remove_return_type >= 201806