Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7957 Discussions

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

Ricardo_Costa
Beginner
407 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
407 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

0 Kudos
Reply