G ++ - 5.1.0 с Boost поддерживает C ++ 17? - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь скомпилировать специфичный для C ++ 17 gcd-код, используя g++-5.1.0 (2015) и Boost-1.71.0 на Windows 7 :

#include <numeric>

int main() {
  int x=90;
  int y=9;
  return gcd(x,y);
}

Когда я компилирую его с помощью:

g++ gcd.cpp -IC:\Programs\boost-1.71.0\include -std=c++17

он говорит error: 'gcd' was not declared in this scope

Если я #include <boost/ratio/detail/mpl/gcd.hpp> на этот раз говорит error: missing template arguments before '(' token, ссылаясь на gcd's (

Правильно ли поддерживает g++-5.1.0 C++ 17? Если так, как сделать так, чтобы он правильно обрабатывал код C++17? Спасибо.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

::mpl::gcd(x,y) - это не что-то в C ++ 17.

Я подозреваю, что вы имеете в виду std::gcd.

Кроме того, шансы на gcc-5.1 (выпущен в апреле 2015 года)) реализация std::gcd (функция C ++ 17) достаточно низкая. Это можно было бы реализовать там, но это не совсем так.

0 голосов
/ 04 октября 2019

Я не смог заставить его работать с :: mpl, так как это похоже на вспомогательную структуру для отношений. С другой стороны, вы имели в виду:

boost :: math :: gcd (x, y);

...