Add a note about permitting default member initializers
[oota-llvm.git] / docs / CodingStandards.rst
index 992939259ab9b6fc7ea3614419285ee8802f090b..8c8110d033210d7d5e58736782ebb62c3dbae98e 100644 (file)
@@ -131,6 +131,12 @@ unlikely to be supported by our host compilers.
     cannot synthesize them.
 * Initializer lists: N2627_
 * Delegating constructors: N1986_
+* Default member initializers (non-static data member initializers): N2756_
+
+  * Only use these for scalar members that would otherwise be left
+    uninitialized. Non-scalar members generally have appropriate default
+    constructors, and MSVC 2013 has problems when braced initializer lists are
+    involved.
 
 .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
 .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
@@ -156,7 +162,7 @@ unlikely to be supported by our host compilers.
 .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
 .. _N2627: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
 .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
-.. _MSVC-compatible RTTI: http://llvm.org/PR18951
+.. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
 
 The supported features in the C++11 standard libraries are less well tracked,
 but also much greater. Most of the standard libraries implement most of C++11's