Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.


Copyright 2019 Glen Joseph Fernandes

Distributed under the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt
or copy at

#include <boost/type_traits/add_lvalue_reference.hpp>
#include <boost/type_traits/add_rvalue_reference.hpp>
#include <boost/type_traits/is_lvalue_reference.hpp>
#include <boost/type_traits/is_rvalue_reference.hpp>
#include <boost/type_traits/conditional.hpp>

namespace boost {

template<class T, class U>
struct copy_reference {
    typedef typename conditional<is_rvalue_reference<U>::value,
        typename add_rvalue_reference<T>::type,
        typename conditional<is_lvalue_reference<U>::value,
        typename add_lvalue_reference<T>::type, T>::type>::type type;

template<class T, class U>
using copy_reference_t = typename copy_reference<T, U>::type;

} /* boost */