
David Abrahams wrote:
"Edward Diener" <eddielee@tropicsoft.com> writes:
What are the issues with call_traits which make it unusable ?
As far as I can tell, there is no clear documentation of what _precisely_ any partcular member of call_traits<T> is for a given T.
The table given after "The following table shows the effect that call_traits has on various types, the table assumes that the compiler supports partial specialization: if it doesn't then all types behave in the same way as the entry for "myclass", and call_traits can not be used with reference or array types" seems to answer that pretty specifically. It gives the values which call_traits will generate for any user defined type and various permutations of a basic type.
It's even less clear what fallback the library uses when a full implementation of call_traits would require partial specialization that isn't available.
See quote above. How many compilers without partial specialization, beside VC6, does Boost really want to support anymore. My guess would be 0 and if Boost didn't feel obliged to support VC6, I am sure all Boost developers would be happier. I am not knocking the tremendous effort Boost has made to support VC6, since I have used it myself and am appreciative of it. But if call_traits doesn't largely work with VC6 in any meaningful way, I don't think it is a reason to deprecate it.
It seems as though the documentation is intended to be a more abstract description of what happens, but it leaves me (at least) feeling very unclear about what I'm actually getting.
Seems fairly clear to me. The only possibiliites not listed are other permutations of user-defined types. I would think this latter may be a documentation issue, but an educated guess would be that other permutations of user-defined types would mirror the other permutations of basic types.
It's also unclear to me what purpose is served by the "reference" and "const_reference" members.
In the beginning of the doc it specifies that both are for returning values of reference and const reference respectively, while avoiding the reference to reference problem. I am not defending call_traits itself, which I have not used but which I am thinking about using as part of my calling and returning style, but rather the doc which seems fairly clear to me about what it is and does from a user perspective.