Support constant evaluation for member calls on std::initializer_list

temporaries.

llvm-svn: 224449
This commit is contained in:
Richard Smith 2014-12-17 19:24:30 +00:00
parent aaa317a1eb
commit 513955c487
2 changed files with 6 additions and 0 deletions

View File

@ -5474,6 +5474,9 @@ public:
bool VisitCallExpr(const CallExpr *E) {
return VisitConstructExpr(E);
}
bool VisitCXXStdInitializerListExpr(const CXXStdInitializerListExpr *E) {
return VisitConstructExpr(E);
}
};
} // end anonymous namespace

View File

@ -1712,6 +1712,9 @@ namespace InitializerList {
return sum(ints.begin(), ints.end());
}
static_assert(sum({1, 2, 3, 4, 5}) == 15, "");
static_assert(*std::initializer_list<int>{1, 2, 3}.begin() == 1, "");
static_assert(std::initializer_list<int>{1, 2, 3}.begin()[2] == 3, "");
}
namespace StmtExpr {