Can C++11 decltype be used to create a typedef for function pointer from an existing function?

c++, c++11, decltype

Solution

Yes, of course:

`typedef decltype(&A::foo) PFN_FOO;`

You can also define type alias via `using` keyword (Thanks to Matthieu M.):

`using PFN_FOO = decltype(&A::foo);`

Problem

Given ``` struct A { int foo(double a, std::string& b) const; }; ``` I can create a member function pointer like this: ``` typedef int (A::*PFN_FOO)(double, std::string&) const; ``` Easy enough, except that `PFN_FOO` needs to be updated if `A::foo`'s signature changes. Since C++11 introduces `decltype`, could it be used to automatically deduce the signature and create the typedef?

Original source