c++ - Function pointer in Template -


in old code seeing function pointer used in template:

typedef int (*get_max)();  template<get_max func> get_max func() {         return func; } 

as new template, lost , trying google more same theories how possible. link of book described? in advance

global functions have known addresses of known sizes, can used in compile-time expression, e.g. template parameters. on standard x86 platforms address has 32 bits, on x64 - 64 bits (that's why storing shouldn't use int, has 32 bits on both platforms, rather intptr_t).

so code doing returning pointer function func function has been specialised for. internally, returns address of passed function. may have confused function names decay function pointers (i.e. don't have use & function's address)

you can create template parameter being address of global non-static variable, if in these kind of things. helps understand what's going on in original example.

#include <iostream> #include <string>  template<int* p> int* useless_proxy() {     return p; }  int foo = 666;  int main() {     std::cout << *useless_proxy<&foo>() << std::endl; // prints 666 }; 

Comments

Popular posts from this blog

java - WrongTypeOfReturnValue exception thrown when unit testing using mockito -

php - Magento - Deleted Base url key -

android - How to disable Button if EditText is empty ? -