Quantcast
Channel: Intel® C++ Compiler
Viewing all articles
Browse latest Browse all 1616

icc 15.0.3 cannot compile std::vector constructor with headers from gcc 5.1.1

$
0
0

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)
$


Viewing all articles
Browse latest Browse all 1616

Trending Articles