@@ -733,7 +733,8 @@ It's a **compile-time** error if:
733
733
matching] the signature of the augmented function.
734
734
735
735
* The augmenting function specifies any default values. * Default values are
736
- defined solely by the introductory function.*
736
+ defined solely by the introductory function. Note that constructors are
737
+ treated differently from other functions in this respect.*
737
738
738
739
* A function is not complete after all augmentations are applied, unless it
739
740
is in a context where it can be abstract. * Every function declaration
@@ -840,13 +841,21 @@ Augmenting constructors works similar to augmenting a function, with some extra
840
841
rules to handle features unique to constructors like redirections and
841
842
initializer lists.
842
843
844
+ It is ** not** a compile-time error for an incomplete factory constructor to
845
+ omit default values. * That is, they are treated similarly to abstract
846
+ instance methods in this respect. This allows the augmenting declaration to
847
+ implement the constructor by adding a redirection or a body.*
848
+
843
849
It's a ** compile-time error** if:
844
850
845
851
* The signature of the augmenting function does not [ match] [ signature
846
852
matching] the signature of the augmented function.
847
853
848
- * The augmenting constructor parameters specify any default values.
849
- * Default values are defined solely by the introductory constructor.*
854
+ * The augmenting constructor parameters specify any default values,
855
+ and the constructor is a non-redirecting factory. * Default values are
856
+ defined by the introductory constructor, except when this precludes the
857
+ augmentation from choosing whether or not the constructor should be
858
+ redirecting.*
850
859
851
860
* The introductory constructor is ` const ` and the augmenting constructor
852
861
is not or vice versa. * An augmentation can't change whether or not a
0 commit comments