C++ 草案说
非类型模板参数应具有以下类型之一(可选 cv 限定): — 整数或枚举类型, — 指向对象的指针或指向函数的指针, — 对对象的左值引用或对函数的左值引用, —指向成员,——std::nullptr_t。
在下面的代码中,我有一个指向成员的指针作为参数传递给模板
using namespace std;
class MyClass
{
public:
int membervar;
};
template< int (MyClass::*var) > struct A
{
// What am I supposed to do with *var? There isn't an object instance to use it!
};
int main(int argc, char *argv[])
{
struct A <&MyClass::membervar> object;
}
上面的代码编译(MSVC2012)没有错误
问题是:我看不出我应该用这样的指针做什么,没有对象实例可以使用它