Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.c++.moderated    |    Moderated discussion of C++ superhackery    |    33,346 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 32,893 of 33,346    |
|    =?ISO-8859-1?Q?Daniel_Kr=FCgler?= to Jerry    |
|    Re: currying pointer to member functions    |
|    07 Mar 13 00:10:27    |
   
   d4526246   
   From: daniel.kruegler@googlemail.com   
      
   On 2013-03-06 00:20, Jerry wrote:   
   > I appreciate any advice about how to do this.   
   >   
   > I can make this work:   
   >   
   > struct a   
   > {   
   > int b;   
   > int c() {return b+1;}   
   > int d(int x) {return b+x;}   
   > };   
   >   
   > int main()   
   > {   
   > a m = { 1 }, n = { 2 };   
   > a *ps = &m;   
   > int (a::*pf)() = &a::c;   
   > std::cout << (ps->*pf)() << std::endl;   
   > return 0;   
   > }   
   >   
   > And it runs the function and everything works. But what I want to   
   > do is curry the function so that I can store (ps->*pf) and then   
   > later execute it. So what is the type of &(ps->*pf) ?   
      
   The standard does not assign any meaning to it except that it says   
   that this expression is not valid. According to 5.5 p6:   
      
   "If the result of .* or ->* is a function, then that result can be   
   used only as the operand for the function call operator ()."   
      
   Which means that the application of the address-of operator is not   
   supported.   
      
   > I make a class:   
   >   
   > template
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca