When I compile the matexp.cc with g++ I get belows errors.
[mbilgen@centos7 linux-tracing-workshop]$ g++ matexp.cc -g -o matexp
matexp.cc: In member function ‘matrix<T> matrix<T>::operator+(const matrix<T>&) const’:
matexp.cc:26:19: error: ‘invalid_argument’ is not a member of ‘std’
throw std::invalid_argument("matrix dimensions don't match");
^
matexp.cc:27:14: error: ‘result’ does not name a type
auto result = *this;
^
matexp.cc:30:28: error: there are no arguments to ‘result’ that depend on a template parameter, so a declaration of ‘result’ must be available [-fpermissive]
result(i, j) += other(i, j);
^
matexp.cc:30:28: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
matexp.cc:31:16: error: ‘result’ was not declared in this scope
return result;
^
matexp.cc: In member function ‘matrix<T> matrix<T>::operator*(const matrix<T>&) const’:
matexp.cc:35:19: error: ‘invalid_argument’ is not a member of ‘std’
throw std::invalid_argument("multiplication implemented only "
^
matexp.cc:38:19: error: ‘invalid_argument’ is not a member of ‘std’
throw std::invalid_argument("matrix dimensions don't match");
^
matexp.cc: In constructor ‘exponentiator<T>::exponentiator(matrix<T>, int)’:
matexp.cc:55:14: error: ‘move’ is not a member of ‘std’
mat_(std::move(mat)), exponent_(exp) {
^
matexp.cc: In member function ‘matrix<T> exponentiator<T>::operator()()’:
matexp.cc:58:14: error: ‘a’ does not name a type
auto a = mat_;
^
matexp.cc:60:13: error: ‘a’ was not declared in this scope
a = a * mat_;
^
matexp.cc:62:16: error: ‘a’ was not declared in this scope
return a;
^
matexp.cc: In member function ‘matrix<float> io::read()’:
matexp.cc:72:19: error: ‘invalid_argument’ is not a member of ‘std’
throw std::invalid_argument("unable to open input file");
^
matexp.cc:77:23: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
matrix<float> res{ rows, cols };
^
matexp.cc:77:39: error: in C++98 ‘res’ must be initialized by constructor, not by ‘{...}’
matrix<float> res{ rows, cols };
^
matexp.cc: In member function ‘void io::exp_to(std::string, int)’:
matexp.cc:96:14: error: ‘mat’ does not name a type
auto mat = read();
^
matexp.cc:97:34: error: ‘mat’ was not declared in this scope
exponentiator<float> exp(mat, rounds);
^
matexp.cc: In function ‘int main(int, char**)’:
matexp.cc:112:26: error: ‘atoi’ is not a member of ‘std’
prog.exp_to(argv[3], std::atoi(argv[2]));
^
When I compile the matexp.cc with g++ I get belows errors.