summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/constant-expression-cxx1z.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [Sema] Discarded statment should be an evaluatable context.Erik Pilkington2018-07-031-0/+13
| | | | | | | | | | The constexpr evaluator was erroring out because these templates weren't defined. Despite being used in a discarded statement, we still need to constexpr evaluate them, which means that we need to instantiate them. Fixes PR37585. Differential revision: https://reviews.llvm.org/D48322 llvm-svn: 336233
* [c++1z] Permit constant evaluation of a call through a function pointer whoseRichard Smith2016-12-151-0/+2
| | | | | | | type differs from the type of the actual function due to having a different exception specification. llvm-svn: 289754
* DR1295 and cleanup for P0135R1: Make our initialization code more directlyRichard Smith2016-12-091-0/+5
| | | | | | | | | | | | | | | mirror the description in the standard. Per DR1295, this means that binding a const / rvalue reference to a bit-field no longer "binds directly", and per P0135R1, this means that we materialize a temporary in reference binding after adjusting cv-qualifiers and before performing a derived-to-base cast. In C++11 onwards, this should have fixed the last case where we would materialize a temporary of the wrong type (with a subobject adjustment inside the MaterializeTemporaryExpr instead of outside), but we still have to deal with that possibility in C++98, unless we want to start using xvalues to represent materialized temporaries there too. llvm-svn: 289250
* Resolve exception specifications when selecting an overloaded operator.Richard Smith2016-10-191-0/+2
| | | | llvm-svn: 284556
* DR1330: instantiate exception-specifications when "needed". We previously didRichard Smith2016-10-181-0/+12
| | | | | | | | | | | | | | | | | | | | not instantiate exception specifications of functions if they were only used in unevaluated contexts (other than 'noexcept' expressions). In C++17 onwards, this becomes essential since the exception specification is now part of the function's type. Note that this means that constructs like the following no longer work: struct A { static T f() noexcept(...); decltype(f()) *p; }; ... because the decltype expression now needs the exception specification of 'f', which has not yet been parsed. llvm-svn: 284549
* P0017R1: In C++1z, an aggregate class can have (public non-virtual) base ↵Richard Smith2016-03-081-0/+27
classes; these are initialized as if they were data members. llvm-svn: 262963
OpenPOWER on IntegriCloud