summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp
Commit message (Collapse)AuthorAgeFilesLines
* DR1872: don't allow any calls to virtual functions in constantRichard Smith2019-05-091-2/+2
| | | | | | | | evaluation. Not even in cases where we would not actually perform virtual dispatch. llvm-svn: 360370
* Add missing temporary materialization conversion on left-hand side of .Richard Smith2018-07-271-1/+1
| | | | | | | | | in some member function calls. Specifically, when calling a conversion function, we would fail to create the AST node representing materialization of the class object. llvm-svn: 338135
* Add missing "non-constant" diagnostic for a member call on a temporary ofRichard Smith2014-06-111-1/+1
| | | | | | non-literal class type. llvm-svn: 210696
* The 'constexpr implies const' rule for non-static member functions is gone inRichard Smith2013-04-211-2/+2
| | | | | | | | | C++1y, so stop adding the 'const' there. Provide a compatibility warning for code relying on this in C++11, with a fix-it hint. Update our lazily-written tests to add the const, except for those ones which were testing our implementation of this rule. llvm-svn: 179969
* Update constexpr implementation to match CWG's chosen approach for core issuesRichard Smith2012-02-131-24/+18
| | | | | | | | | | | | | | | | | | | | 1358, 1360, 1452 and 1453. - Instantiations of constexpr functions are always constexpr. This removes the need for separate declaration/definition checking, which is now gone. - This makes it possible for a constexpr function to be virtual, if they are only dependently virtual. Virtual calls to such functions are not constant expressions. - Likewise, it's now possible for a literal type to have virtual base classes. A constexpr constructor for such a type cannot actually produce a constant expression, though, so add a special-case diagnostic for a constructor call to such a type rather than trying to evaluate it. - Classes with trivial default constructors (for which value initialization can produce a fully-initialized value) are considered literal types. - Classes with volatile members are not literal types. - constexpr constructors can be members of non-literal types. We do not yet use static initialization for global objects constructed in this way. llvm-svn: 150359
* Update all tests other than Driver/std.cpp to use -std=c++11 rather thanRichard Smith2011-10-131-1/+1
| | | | | | -std=c++0x. Patch by Ahmed Charles! llvm-svn: 141900
* constexpr: semantic checking for constexpr functions and constructors. Based inRichard Smith2011-10-011-0/+74
part on patches by Peter Collingbourne. We diverge from the C++11 standard in a few areas, mostly related to checking constexpr function declarations, and not just definitions. See WG21 paper N3308=11-0078 for details. Function invocation substitution is not available in this patch; constexpr functions cannot yet be used from within constant expressions. llvm-svn: 140926
OpenPOWER on IntegriCloud