Having compile-time constant function values is only part of first-class functions -- and even then pointer to member is not the same as pointer to function. boost::bind and friends sweep some of this under the carpet with compile-time metaprogramming.