id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 8406,boost::_bi::result_traits should handle function pointers,jason@…,Peter Dimov,"I recently modified G++ to enforce the rule that forming a function type with an abstract class as a return or parameter type causes a substitution failure. So now we instantiate return/parameter types during substitution in order to check whether they are abstract. I've gotten a bug report (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56838) that this breaks boost/bind; a trivial example like {{{ #include void f(); int main() { boost::bind(&f); } }}} causes an error because while forming overload candidates we end up trying to instantiate result_traits, which fails. It seems to me that instead of (or in addition to) all the overloads of bind in bind_cc.hpp, there should be partial specializations of result_traits to deal with function pointers; then the generic function object overload would handle them. That is, specializations like {{{ template struct result_traits { typedef R type; } }}} The committee may well decide that the G++ behavior is wrong and we should adjust the standard accordingly, but it still seems that this would be an improvement to boost.",Bugs,closed,To Be Determined,bind,Boost Development Trunk,Problem,invalid,,