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