Поддерживает ли gcc 6 использование std :: sample (c ++ 17)?

Я пытаюсь собрать этот кусок с ++ 17 код, который содержит std::sample с помощью gcc версия 6.3.0 с помощью следующей команды: g++ -std=gnu++17 -c main.cpp,

Но я получаю это: error: ‘sample’ is not a member of ‘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)

Я не мог найти ответ на этих двух страницах:

4

Решение

Да, так как GCC 5, но пока GCC 7 он находится в std::experimental пространство имен и определено в <experimental/algorithm> заголовок.

Из примечаний к выпуску GCC 5:

Библиотека времени выполнения (libstdc ++)

  • Улучшена экспериментальная поддержка библиотечных основ TS, в том числе:

    • шаблон функции std :: эксперимент :: образец;

Проверено на GCC 5.1 https://wandbox.org/permlink/HWnX3qSgKbZO2qoH

2

Другие решения

Нет, мы можем видеть из таблица в документации под «Основы библиотеки V1 TS Компоненты: Выборка», что самая ранняя версия libstdc ++ для поддержки std::sample это версия 7.1

3

Поддерживает ли gcc 6 использование std :: sample?

Нет. Вам нужен GCC 7. Из Замечания к выпуску GCC 7:

  • Экспериментальная поддержка C ++ 17, включая следующие новые функции:

    • std :: sample, std :: default_searcher, std :: boyer_moore_searcher и
      станд :: boyer_moore_horspool_searcher;

Для GCC 7 вам может понадобиться -std=c++1z или же -std=gnu++1z так как это экспериментально.

1
По вопросам рекламы [email protected]