Метафункция для применения преобразования элементов к полному типу аргумента.
Он удаляет ссылки на const, ссылки на типы массивов сохраняются, даже если массив const. Ссылочные обертки удаляются (см. Ссылка Обертки).
#include <boost/fusion/support/deduce.hpp>
#include <boost/fusion/include/deduce.hpp>
namespace traits
{
template <typename T>
struct deduce
{
typedef unspecified type;
};
}
template <typename T>
struct holder
{
typename traits::deduce<T const &>::type element;
holder(T const & a)
: element(a)
{ }
};
template <typename T>
holder<T> make_holder(T const & a)
{
return holder<T>(a);
}