[type_erasure] use of typeid_of with reference any
Boost.TypeErasure docs say template<typename Concept, typename T> const std::type_info & typeid_of(const any< Concept, T > & arg); [...] Requires: Concept includes typeid_<T>. T is a non-reference, CV-unqualified placeholder. which, if my literal reading is right, means that you can't use typeid_of on, say, any<typeid_<>,_self&>, yet the following compiles on GCC #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/builtin.hpp> #include <boost/type_erasure/typeid_of.hpp> #include <iostream> using namespace boost::type_erasure; int main() { int x=0; any<boost::mpl::vector<typeid_<>,relaxed>,_self&> a=x; std::cout<<typeid_of(a).name()<<"\n"; } and correctly outputs the name of the "int" type. Is this a bug in the docs or am I missing something? Thank you, Joaquín M López Muñoz
AMDG On 08/21/2016 11:22 AM, Joaquin M López Muñoz wrote:
Boost.TypeErasure docs say
template<typename Concept, typename T> const std::type_info & typeid_of(const any< Concept, T > & arg);
[...]
Requires: Concept includes typeid_<T>. T is a non-reference, CV-unqualified placeholder.
This is somewhat unclear, but the requirement is only intended to apply to the other overload.
which, if my literal reading is right, means that you can't use typeid_of on, say, any<typeid_<>,_self&>, yet the following compiles on GCC
In Christ, Steven Watanabe
participants (2)
-
Joaquin M López Muñoz
-
Steven Watanabe