Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
21 Views

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

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
Highlighted
Employee
21 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