
Daniel Walker wrote:
On 3/21/07, shunsuke <pstade.mb@gmail.com> wrote:
Daniel Walker wrote:
If/when lambda standardizes on result<>, the lambda related special cases in result_of can be removed. It will break a code using not result_of but sig compatible functors?
Yes. That's the reason lambda would support both for a time with sig<> being deprecated. After a release or two (giving users plenty of time to update their code) sig<> would be removed. This gives them a fair warning and time to adapt.
I think users don't want to spend the time. Smart users will protect themselves right now by using something like.. struct sig_compatible_fun : enable_result_of_sig // added { // ... }; Hmm, patch is no longer required. :-)
Can the patch support a sig compatible functor which is "nullary-callable" (e.g. lambda::constructor<>) ?
Yes. I just tested it with lambda::constructor<>, and it does work.
I tried this: #include <boost/utility/result_of.hpp> #include <boost/lambda/construct.hpp> int main() { using boost::lambda::constructor; using boost::result_of; int i = 1; result_of<constructor<int>(int&)>::type r = constructor<int>()(i); // (1) GCC compiles. result_of<constructor<int>()>::type r = constructor<int>()(); // (2) GCC fails. } I guess a sig-compatible functor which is nullary-callable must be ported to result_of, even if the patch is applied. Note that nullary instantiation of 'result_of' must always succeed. (See the rationale at http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1454.html) Well, I have bad news. VC++7.1 and VC8 can't compile (1) nor (2). :-(
I introduce <boost/detail/functionN.hpp> at Boost.Accumulators, which seems very cool.
I looked for your file in the boost-sandbox cvs repository and couldn't find it. Could you send a link?
See the accumulators.zip in "Math - Numerics" directory at Boost Vault. Regards, -- Shunsuke Sogame