Привет имеют следующий пример кода:Компиляция на Linux с C++ стандартной библиотеки
func.h - файл заголовка для функций
#include <vector>
#include <tuple>
using std::vector;
using std::tuple;
tuple <double,double> A(vector<int>& n);
func.cpp - функция CPP файл
#include <iostream>
#include <vector>
#include <tuple>
using namespace std;
tuple <double,double> A(vector<int>& n)
{
double a1=n.size();
double a2=a1+0.5;
return make_tuple(a1,a2);
}
main.cpp - основной файл cpp
#include <iostream>
#include <vector>
#include <tuple>
#include "func.h"
using namespace std;
int main()
{
double a1,a2;
vector<int> n;
n.push_back(1);
n.push_back(2);
tie(a1,a2)=A(n);
return 0;
}
Это хорошо компилируется в визуальной студии.
У меня есть проблема с компиляцией его на Linux (GCC версии 4.4.7 20120313 Red Hat 4.4.7-11) с:
g++ -03 -std=c++0x main.cpp func.cpp -lm
Это не компилируется, я получаю следующие ошибки:
1. In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/array:35,from main.cpp:5:/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/c++0x_warning.h:31:2: error: #error This file requires compiler and library suppcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
2. ‘std::tuple’ has not been declared
3. expected constructor, destructor, or type conversion before ‘<’ token
Любые рекомендации относительно того, как с этим бороться, будут полезны!
gcc версия 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) – jarhead
Версия 4.4 GCC не поддерживает C++ 11 очень хорошо, практически ничего из этого не происходит. Если возможно, вам следует обновить GCC до более поздней версии (теперь это до версии 6.2, которая полностью поддерживает C++ 11 и C++ 14 и большую часть предстоящего C++ 17). –
Я не могу его обновить, это внешний сервер, и ответственный парень этого не сделает ... другими способами? ICPC? что-нибудь еще? – jarhead