diff --git a/doc/add_lvalue_reference.qbk b/doc/add_lvalue_reference.qbk
new file mode 100644
index 0000000..4416816
--- /dev/null
+++ b/doc/add_lvalue_reference.qbk
@@ -0,0 +1,47 @@
+[/
+ Copyright 2010 John Maddock.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+]
+
+[section:add_lvalue_reference add_lvalue_reference]
+
+ template
+ struct add_lvalue_reference
+ {
+ typedef __below type;
+ };
+
+__type If `T` names an object or function type then the member typedef `type`
+shall name `T&`; otherwise, if `T` names a type ['rvalue reference to U] then
+the member typedef type shall name `U&`; otherwise, type shall name `T`.
+
+__std_ref 20.7.6.2.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include ` or ` #include `
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_lvalue_reference::type`][`int&`]]
+
+[[`add_lvalue_reference::type`] [`int const&`]]
+
+[[`add_lvalue_reference::type`] [`int*&`]]
+
+[[`add_lvalue_reference::type`] [`int*&`]]
+
+[[`add_lvalue_reference::type`][`int&`]]
+
+[[`add_lvalue_reference::type`][`void`]]
+
+]
+
+[endsect]
+
diff --git a/doc/add_reference.qbk b/doc/add_reference.qbk
index fd37bd6..a36e59d 100644
--- a/doc/add_reference.qbk
+++ b/doc/add_reference.qbk
@@ -7,6 +7,12 @@
[section:add_reference add_reference]
+[note This trait has been made obsolete by __add_lvalue_reference and __add_rvalue_reference,
+and new code should use these new traits rather than __is_reference which is retained
+for backwards compatibility only.
+]
+
+
template
struct add_reference
{
diff --git a/doc/add_rvalue_reference.qbk b/doc/add_rvalue_reference.qbk
new file mode 100644
index 0000000..e3f561b
--- /dev/null
+++ b/doc/add_rvalue_reference.qbk
@@ -0,0 +1,50 @@
+[/
+ Copyright 2010 John Maddock.
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt).
+]
+
+[section:add_rvalue_reference add_rvalue_reference]
+
+ template
+ struct add_rvalue_reference
+ {
+ typedef __below type;
+ };
+
+__type If `T` names an object or function type then the member typedef type
+shall name `T&&`; otherwise, type shall name `T`. ['\[Note: This rule reflects
+the semantics of reference collapsing. For example, when a type `T` names
+a type U&, the type `add_rvalue_reference::type` is not an rvalue
+reference. -end note\]].
+
+__std_ref 20.7.6.2.
+
+__compat If the compiler does not support partial specialization of class-templates
+and rvalue references
+then this template will compile, but the member `type` will always be the same as
+type `T`.
+
+__header ` #include ` or ` #include `
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_rvalue_reference::type`][`int&&`]]
+
+[[`add_rvalue_reference::type`] [`int const&`]]
+
+[[`add_rvalue_reference::type`] [`int*&&`]]
+
+[[`add_rvalue_reference::type`] [`int*&`]]
+
+[[`add_rvalue_reference::type`][`int&&`]]
+
+[[`add_rvalue_reference::type`][`void`]]
+
+]
+
+[endsect]
+
diff --git a/doc/html/boost_typetraits/background.html b/doc/html/boost_typetraits/background.html
index cb8e3e2..9c24e88 100644
--- a/doc/html/boost_typetraits/background.html
+++ b/doc/html/boost_typetraits/background.html
@@ -56,7 +56,7 @@
method available to them.
diff --git a/doc/html/boost_typetraits/intrinsics.html b/doc/html/boost_typetraits/intrinsics.html
index b89d232..493a7c9 100644
--- a/doc/html/boost_typetraits/intrinsics.html
+++ b/doc/html/boost_typetraits/intrinsics.html
@@ -99,7 +99,7 @@
of the following macros: