llvm-project/clang/www
Richard Smith 5179eb7821 P0136R1, DR1573, DR1645, DR1715, DR1736, DR1903, DR1941, DR1959, DR1991:
Replace inheriting constructors implementation with new approach, voted into
C++ last year as a DR against C++11.

Instead of synthesizing a set of derived class constructors for each inherited
base class constructor, we make the constructors of the base class visible to
constructor lookup in the derived class, using the normal rules for
using-declarations.

For constructors, UsingShadowDecl now has a ConstructorUsingShadowDecl derived
class that tracks the requisite additional information. We create shadow
constructors (not found by name lookup) in the derived class to model the
actual initialization, and have a new expression node,
CXXInheritedCtorInitExpr, to model the initialization of a base class from such
a constructor. (This initialization is special because it performs real perfect
forwarding of arguments.)

In cases where argument forwarding is not possible (for inalloca calls,
variadic calls, and calls with callee parameter cleanup), the shadow inheriting
constructor is not emitted and instead we directly emit the initialization code
into the caller of the inherited constructor.

Note that this new model is not perfectly compatible with the old model in some
corner cases. In particular:
 * if B inherits a private constructor from A, and C uses that constructor to
   construct a B, then we previously required that A befriends B and B
   befriends C, but the new rules require A to befriend C directly, and
 * if a derived class has its own constructors (and so its implicit default
   constructor is suppressed), it may still inherit a default constructor from
   a base class

llvm-svn: 274049
2016-06-28 19:03:57 +00:00
..
analyzer [www][analyzer] Update recommended suppression mechanism for localization. 2016-05-06 18:13:30 +00:00
demo Update mailing list references to lists.llvm.org 2015-08-05 03:55:23 +00:00
OpenProjects.html Update some stuff on the open projects page to reflect things we've already done. 2013-04-20 16:20:44 +00:00
UniversalDriver.html
builtins.py
carbon-compile.png
clang_video-05-25-2007.html
clang_video-07-25-2007.html
comparison.html Fix grammar. 2015-12-16 00:19:23 +00:00
compatibility.html Documentation updates for recent changes to VLAs and default-initialization of const-qualified class objects. 2016-05-05 02:53:55 +00:00
content.css
cxx_compatibility.html
cxx_dr_status.html Add test for DR1359. 2016-06-13 19:04:44 +00:00
cxx_status.html P0136R1, DR1573, DR1645, DR1715, DR1736, DR1903, DR1941, DR1959, DR1991: 2016-06-28 19:03:57 +00:00
diagnostics.html Fix typo in CSS class name. 2014-02-03 07:02:19 +00:00
favicon.ico
feature-compile1.png
feature-compile2.png
feature-memory1.png
features.html Remove deprecated information about performances: 2014-04-27 14:54:11 +00:00
get_involved.html Update mailing list references to lists.llvm.org 2015-08-05 03:55:23 +00:00
get_started.html Add warning about CR+LF line endings on Windows. 2016-04-20 16:43:34 +00:00
hacking.html Use VS2015 Project Support for Natvis to eliminate the need to manually install clang native visualizer 2016-03-28 18:03:37 +00:00
index.html Test commit, fixed "clang" to "Clang" in docs 2016-02-10 21:06:10 +00:00
libstdc++4.4-clang0x.patch
libstdc++4.6-clang11.patch
libstdc++4.7-clang11.patch
make_cxx_dr_status Update make_cxx_dr_status after the 3.8 branch. 2016-01-13 22:51:59 +00:00
menu.css Fix a menu issue. patch by Vassil Vassilev 2015-03-09 09:09:55 +00:00
menu.html.incl Update mailing list references to lists.llvm.org 2015-08-05 03:55:23 +00:00
related.html Add a link to the DXR project 2015-10-29 17:20:17 +00:00
robots.txt