[/ 
  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 <class T>
   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 <boost/type_traits/add_lvalue_reference.hpp>` or ` #include <boost/type_traits.hpp>`

[table Examples

[ [Expression] [Result Type]]

[[`add_lvalue_reference<int>::type`][`int&`]]

[[`add_lvalue_reference<int const&>::type`] [`int const&`]]

[[`add_lvalue_reference<int*>::type`] [`int*&`]]

[[`add_lvalue_reference<int*&>::type`] [`int*&`]]

[[`add_lvalue_reference<int&&>::type`][`int&`]]

[[`add_lvalue_reference<void>::type`][`void`]]

]

[endsect]

