Boost logo

Boost :

Subject: [boost] [utility] declval addition? [type_traits] add_rvalue_reference addition?
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2010-08-14 09:42:54


I was wondering if we can add the declval utility function template to the Boost.Utility library

20.3.4 Function template declval [declval]

1 The library provides the function template declval to simplify the definition of expressions which occur as

unevaluated operands (Clause 5).

template <class T>

typename add_rvalue_reference<T>::type declval() noexcept; // as unevaluated operand

2 Remarks: If this function is used (as defined by (3.2)), the program is ill-formed.

3 Remarks: The template parameter T of declval may be an incomplete type.

[ Example:

template <class To, class From>

decltype(static_cast<To>(declval<From>())) convert(From&&);

declares a function template convert which only participats in overloading if the type From can be

explicitly converted to type To. For another example see class template common_type ( -end

example ]

BTW, add_rvalue_reference is not available on Boost.TypeTraits, add_rvalue_reference_layer. Any problem to add it?


Vicente Juan Botet Escribá

Boost list run by bdawes at, gregod at, cpdaniel at, john at