C++11 如何声明模板化方法的模板化指针?
模板化的C++11 如何声明模板化方法的模板化指针?,c++11,templates,using,pointer-to-member,C++11,Templates,Using,Pointer To Member,模板化的typedefs可以通过使用。如何直接生成模板化方法指针 例如: class MyClass { template<bool B> void fnc() { /*...*/ }; // Now I can do: template<bool B> using TempPtr = decltype(&MyClass::fnc<B>); // ^^^^^^^^^^^^^^^^^^^^^^^^^^ }
typedef
s可以通过使用。如何直接生成模板化方法指针
例如:
class MyClass {
template<bool B> void fnc() { /*...*/ };
// Now I can do:
template<bool B>
using TempPtr = decltype(&MyClass::fnc<B>);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^
};
(后续问题:我可以使用temptr
作为模板参数吗?这些将起作用,给出稍微不同的行为:
template<bool B>
using Ptr = void (MyClass::*)();
using Ptr2 = void (MyClass::*)();
// alternatively
//typedef void (MyClass::*Ptr2)();
这也是非模板的Ptr2
也可以正常工作的原因。强制性的“为什么您会想要它”:D不管怎样,您确定实际成员函数需要模板部分吗?@BartekBanachewicz我正在研究一种新的元编程模式。
template<bool B>
using Ptr = void (MyClass::*)();
using Ptr2 = void (MyClass::*)();
// alternatively
//typedef void (MyClass::*Ptr2)();
MyClass::Ptr<true> ptr = &MyClass::fnc<true>;
MyClass::Ptr2 ptr2 = &MyClass::fnc<true>;
MyClass::Ptr<false> ptr = &MyClass::fnc<true>;