diff --git a/cppguide.xml b/cppguide.xml
index cdd0444..c61416f 100644
--- a/cppguide.xml
+++ b/cppguide.xml
@@ -4,7 +4,7 @@
-Revision 3.146
+Revision 3.154
@@ -1581,7 +1581,8 @@ Tashana Landray
- We do not allow default function parameters.
+ We do not allow default function parameters, except in
+ a few uncommon situations explained below.
@@ -1600,10 +1601,23 @@ Tashana Landray
the new code.
- We require all arguments to be explicitly specified, to
- force programmers to consider the API and the values they are
- passing for each argument rather than silently accepting
- defaults they may not be aware of.
+
+ Except as described below, we require all arguments to be
+ explicitly specified, to force programmers to consider the API
+ and the values they are passing for each argument rather than
+ silently accepting defaults they may not be aware of.
+
+
+ One specific exception is when default arguments are used to
+ simulate variable-length argument lists.
+
+
+ // Support up to 4 params by using a default empty AlphaNum.
+ string StrCat(const AlphaNum &a,
+ const AlphaNum &b = gEmptyAlphaNum,
+ const AlphaNum &c = gEmptyAlphaNum,
+ const AlphaNum &d = gEmptyAlphaNum);
+
@@ -2411,6 +2425,9 @@ Tashana Landray
Try not to use macros that expand to unbalanced C++
constructs, or at least document that behavior well.
+ Prefer not using ##
to generate function/class/variable
+ names.
+