diff --git a/docs/docs/metaprogramming.xml b/docs/docs/metaprogramming.xml
index 26bc9b0909e76da1bba8db3ec320b3261cb9821d..1781afd6c07afb2e97b0e4f3419c938a21632bfb 100644
--- a/docs/docs/metaprogramming.xml
+++ b/docs/docs/metaprogramming.xml
@@ -49,6 +49,7 @@
          <item>is_directed_graph</item>
          <item>is_built_in_scalar_type</item>
          <item>promote</item>
+         <item>basic_type</item>
          <item>unsigned_type</item> 
          <item>tabs</item> 
          <item>tmin</item> 
@@ -320,6 +321,23 @@
          
       </component>
       
+   <!-- ************************************************************************* -->
+      
+      <component>
+         <name>basic_type</name>
+         <file>dlib/algs.h</file>
+         <spec_file link="true">dlib/algs.h</spec_file>
+         <description>
+        This is a template that takes a type and trips off any const, volatile, or reference
+        qualifiers and gives you back the basic underlying type.  So for example:
+
+         <p>
+        For example, promote&lt;const int&amp;&gt;::type == int 
+         </p>
+         </description>
+         
+      </component>
+      
    <!-- ************************************************************************* -->
       
       
diff --git a/docs/docs/term_index.xml b/docs/docs/term_index.xml
index 9a98d6e51d9ca09b62818207b4715e40f9b2d9d6..a8dae22d254902e74e268d8127cb1a6e9be47286 100644
--- a/docs/docs/term_index.xml
+++ b/docs/docs/term_index.xml
@@ -424,6 +424,7 @@
          <term file="metaprogramming.html" name="is_directed_graph"/>
          <term file="metaprogramming.html" name="is_built_in_scalar_type"/>
          <term file="metaprogramming.html" name="promote"/>
+         <term file="metaprogramming.html" name="basic_type"/>
          <term file="metaprogramming.html" name="assign_zero_if_built_in_scalar_type"/>