|
Boost : |
Subject: Re: [boost] [TypeIndex] Peer review period for library acceptance begins, ending Thurs 21st Nov
From: Antony Polukhin (antoshkka_at_[hidden])
Date: 2013-11-16 12:43:34
2013/11/16 Mathieu Champlon <m.champlon_at_[hidden]>
> On 16/11/2013 16:58, Antony Polukhin wrote:
>
>> 2013/11/16 Mathieu Champlon <m.champlon_at_[hidden]>
>> <...>
>>
>> Do you think getting the type info of the "current" type of a variable
>>> (as
>>> opposed to it's real type) could sometimes prove useful ?
>>> Could it be worth adding a function in TypeIndex ?
>>>
>>> This is a very very common use case in Boost and widely used technique
>> in
>> libraries that use type erasure. Examples are Boost.Function, Boost.Any,
>> Boost,Graph, Boost.Math and others...
>> Such function is already in TypeIndex library, see boost::type_info<T>().
>>
>>
> Yes, but I meant given :
>
> #define SOME_MACRO_IN_MY_LIBRARY( variable ) do_something_complicated_
> requiring_type_info_of_type_of_variable
>
> I cannot use boost::type_info<T>() easily can I ?
> Granted I could do boost::type_info< BOOST_TYPEOF( variable ) >() but
> that's a bit cumbersome compared to for instance a simple boost::type_info(
> variable ).
>
Sorry, I meant boost::type_id (
http://apolukhin.github.io/type_index/boost/type_id.html)
Well, usually you have the type of the variable nearby, and can use it in
type_id<T>:
template <class T>
void operator()(const T& var) {
type_id<T>(); // no need in type_id(var);
}
...
int i;
type_id<int>() // no need in type_id(i);
Cases when it is hard to detect variable type are rare in Boost and I do
not really wish to produce many trivial functions and make the library
heavier.
Anyway, user can always write such function in half a minute:
tempalte <class T>
inline const boost::type_info& my_type_id(const T&) {
return boost::type_id<T>();
}
-- Best regards, Antony Polukhin
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk