Skip to content

ICC Bug List

Matthias Kretz edited this page Dec 8, 2015 · 3 revisions

Since the Intel bug tracker for ICC is locked up I'll use this space to document some of the bugs I come across and reported. The numbers correspond to the Issue ID in the Intel Business Portal.

Pending a Resolution

[6000144543] Pack expansion gets confused by an additional sizeof... expression

ICC tries to static_cast<int *>(double()). If you replace sizeof...(Ts) with any integer it compiles just fine.

#include <utility>
template <typename... Ts> void foo(Ts &&...);
template <std::size_t N, typename T> T maybe(T &&);
template <typename... Ts> void baz(Ts &&... args)
{
  foo(maybe<sizeof...(Ts)>(static_cast<Ts>(args))...);
}
void bar()
{
  int e;
  baz(double(), &e);
}

Resolved

[6000116040] constructor inheritance fails for recursive inheritance and type alias

Resolved with ICC 16 Update 1

The following test case does not compile:

template <int N> struct A;
template <> struct A<0> {};
template <int N> struct A : public A<N - 1> {
 using Base = A<N -1>;
 using Base::A;
};

The output is:

main.cpp(8): error: declaration of a member with the same name as its class
   using Base::A;
                ^

If the line using Base::A is changed to using A<N -1>::A, it compiles fine.