c++ - gcc 6 是否支持使用 std::sample (c++17)?

标签 c++ gcc c++17 gcc6

我正在尝试编译这段包含 std::samplec++ 17 代码使用 gcc 版本 6.3.0 和以下命令:g++ -std=gnu++17 -c main.cpp

但我得到这个:错误:‘sample’不是‘std’的成员...

#include <vector>
#include <algorithm>
#include <random>

int main()
{
    std::vector<int> a{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::vector<int> b(5);

    std::sample(a.begin(), a.end(), 
                b.begin(), b.size(),
                std::mt19937{std::random_device{}()});

    return 0;
}

gcc 6 是否支持使用 std::sample? (它在 gcc 8.2.0 下编译良好)

我在这两页上找不到答案:

最佳答案

是的,因为 GCC 5 , 但直到 GCC 7它在 std::experimental命名空间并在 <experimental/algorithm> 中定义标题。

来自 GCC 5 发行说明:

Runtime Library (libstdc++)

  • Improved experimental support for the Library Fundamentals TS, including:

    • function template std::experimental::sample;

在 GCC 5.1 上测试 https://wandbox.org/permlink/HWnX3qSgKbZO2qoH

关于c++ - gcc 6 是否支持使用 std::sample (c++17)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266354/

相关文章:

c++ - g++ 不包括它所说的为 C++11 包含的文件?

gcc - ./configure使用指定版本的g++

gcc - 如何处理 OS X Yosemite Core 头文件中的非 gcc 兼容代码

c++ - 定义全局变量模板?

c++ - 源代码中的 Kdbg pid() 调用

c++ - OpenCL 程序未执行

c++ - 更喜欢 std::variant<bool, std::string> 中的 std::string for const char *

c++ - 使用参数包和元组创建一个简单的表达式类

c++ - 如何将 kinect 轨迹矩阵转换为 4x4 齐次矩阵(示例)

c++ - 对 stdout 的默认缓冲区大小感到困惑