|
Boost : |
From: Justinas V.D. (vygintas.daugmaudis_at_[hidden])
Date: 2004-05-04 15:54:53
Hmm...
> //test_array_functions( a ); // Does NOT compile with gcc
> test_array_functions<int_array>( a );
>
>
I have quite similar problem, actually. GCC does not allow implicit
type conversions in somewhat complex function overloads. This can really
be quite annoying. And there boost::get_pointer comes to mind.
Question to Peter Dimov. Is it possible and rational to modify code in
mem_fn_template.hpp so that
get_pointer(u) would be called as get_pointer<U>(u) ?
I believe this should not brake existing code, on the other hand, it
would be easier to provide so-needed get_pointer overloads.
Actually, my problem is:
I have, say, type T, and I'd like to write an implicit converter to
templatized type Y so that:
T::value_type * get_pointer(const Y<T> &p). Of course, all required
enable_ifs are applied so that this overload is not visible for other
types that do not meet some certain archetype.
Then invocation of function get_pointer would create temporary object of
type Y<T> which would be destroyed on exit from method call scope. That
would be fine because in my case, Y c-tor locks mutex and d-tor -
unlocks mutex.
This would allow type T<A> to model pointers to A and create thread-safe
bind functors.
Another alternative I have is to specialize mf0, cmf0, .... etc.
(partial function specializations are still non-existant). But this is
unacceptable, I think.
Regards,
Justinas V.D.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk