The following simple program doesn't compile with icc 15.0.3 on Fedora 22. It does work on Fedora 20. I think the main difference is that Fedora 22 is using gcc 5.1.1, which is where the header files come from. In contrast Fedora 20 uses gcc 4.8.3.
I don't know how to interpret the error message.
-Bradley
$ cat ipc.cc
#include <vector>
void foo(int n) {
std::vector<double> V(n, 1);
}
$ icc -std=c++11 -c -o ipc.o ipc.cc
/usr/include/c++/5.1.1/bits/stl_iterator_base_types.h(154): error: name followed by "::" must be a class or namespace name
typedef typename _Iterator::iterator_category iterator_category;
^
detected during:
instantiation of class "std::__iterator_traits<_Iterator, void> [with _Iterator=int]" at line 163
instantiation of class "std::iterator_traits<_Iterator> [with _Iterator=int]" at line 4 of "ipc.cc"
/usr/include/c++/5.1.1/bits/stl_iterator_base_types.h(155): error: name followed by "::" must be a class or namespace name
typedef typename _Iterator::value_type value_type;
^
detected during:
instantiation of class "std::__iterator_traits<_Iterator, void> [with _Iterator=int]" at line 163
instantiation of class "std::iterator_traits<_Iterator> [with _Iterator=int]" at line 4 of "ipc.cc"
/usr/include/c++/5.1.1/bits/stl_iterator_base_types.h(156): error: name followed by "::" must be a class or namespace name
typedef typename _Iterator::difference_type difference_type;
^
detected during:
instantiation of class "std::__iterator_traits<_Iterator, void> [with _Iterator=int]" at line 163
instantiation of class "std::iterator_traits<_Iterator> [with _Iterator=int]" at line 4 of "ipc.cc"
/usr/include/c++/5.1.1/bits/stl_iterator_base_types.h(157): error: name followed by "::" must be a class or namespace name
typedef typename _Iterator::pointer pointer;
^
detected during:
instantiation of class "std::__iterator_traits<_Iterator, void> [with _Iterator=int]" at line 163
instantiation of class "std::iterator_traits<_Iterator> [with _Iterator=int]" at line 4 of "ipc.cc"
/usr/include/c++/5.1.1/bits/stl_iterator_base_types.h(158): error: name followed by "::" must be a class or namespace name
typedef typename _Iterator::reference reference;
^
detected during:
instantiation of class "std::__iterator_traits<_Iterator, void> [with _Iterator=int]" at line 163
instantiation of class "std::iterator_traits<_Iterator> [with _Iterator=int]" at line 4 of "ipc.cc"
compilation aborted for ipc.cc (code 2)
$