
Eric Niebler wrote:
I'll have to take your word for it -- I'm not familiar enough with the TR1 bind to appreciate the difficulty of respecting is_bind_expression. It seems to me that is_bind_expression can be trivially implemented, given appropriately defined placeholders.
Implementing is_bind_expression is trivial and done. Making bind respect it is harder. The TR1 spec says that in bind( f, _1 + _2 ); bind needs to look at is_bind_expression<typeof(_1+_2)>::value to determine whether it's a subexpression. This part is not present in boost::bind, it just recognizes its own bind(...) expressions without asking is_bind_expression.
Result_of support for older compilers ... I suppose that requires partial template specialization, right? Do we still support compilers that don't do PTS?
Well, there are various degrees of doing PTS. Borland does PTS in principle, but seems to choke on pretty much every change I make. Pointers to members also stress even the modern compilers - we just found a pm-related bug in VC8. In general after a commit to boost::bind I plan on two platforms breaking right away, one at a later point. :-)