Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

Compile error when using variadic template alias as a function return type

Ricardo_Costa
Beginner
143 Views

The following code:

[cpp]

template<typename ...Args> class X {};

template<typename ...Args> using Alias = X<Args...>;

 

template<typename ...Args>

Alias<Args...> func ()

{

    return Alias<Args...>();

}

 

int main ()

{

    auto x = func();

}

[/cpp]

generates this error:

test.cpp(12): error: template instantiation resulted in unexpected function type of "Alias<> ()" (
the meaning of a name may have changed since the template declaration -- the type of the template is
 "Alias<Args...> ()")
        auto x = func();
                       ^
          detected during instantiation of "func" at line 11

when compiled with: icl /c /Qstd=c++11 test.cpp

It compiles fine in other compilers such as VS2013.

I'm using ICL version 14.0.1.139.

0 Kudos
1 Reply
Judith_W_Intel
Employee
143 Views

 

Yes this does look like a bug. I have recorded this in our internal bug tracking database as DPD200250256.

Thank you for bringing it to our attention and for the nice small reproducer!

Judy

Reply