regression: no operator "=" matches these operands for std::tie = std::tuple

regression: no operator "=" matches these operands for std::tie = std::tuple

Matthias Kretz's picture

Testcase:

#include <tuple>
std::tuple<int, int, int> f();
void g() {
    int a, b, c;
    std::tie(a, b, c) = f();
}

Compile with:

/opt/intel/composer_xe_2013_sp1.0.080/bin/intel64/icpc -mmic -std=c++11 -c -o tie.o tie.cpp
tie.cpp(7): error: no operator "=" matches these operands
            operand types are: std::tuple<int &, int &, int &> = std::tuple<int, int, int>
      std::tie(a, b, c) = f();
                        ^
compilation aborted for tie.cpp (code 2)

It was fine with ICC 13:
/opt/intel/composer_xe_2013.5.192/bin/intel64/icpc -mmic -std=c++11 -c -o tie.o tie.cpp

Vc: SIMD Vector Classes for C++ http://code.compeng.uni-frankfurt.de/projects/vc
4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Casey's picture

That testcase compiles fine for me with icpc 14.0.0 20130728 on Linux without "-mmic" (I don't have the MIC environment and couldn't test that). Does it build without MIC for you?  Perhaps the regression is in that environment.  

Matthias Kretz's picture

Yes, I tested it without -mmic and yes, it only fails for -mmic.

Vc: SIMD Vector Classes for C++ http://code.compeng.uni-frankfurt.de/projects/vc
Jennifer J. (Intel)'s picture

yeh. looks like a bug to me. I'll file a bug report to the compiler team.

thanks for reporting.

Jennifer

Login to leave a comment.