//以指针为模板参数 template<int *p > struct wrapper { /* data */ int get(){return *p;} void set(int v){*p=v;} }; //以引用为模板参数 template<int &p> struct wrapper1 { /* data */ int get(){return p;} void set(int v){p=v;} }; int global_var=0; int main(int argc, char const *argv[]) { wrapper<&global_var>gwrapper; gwrapper.set(1); cout<<gwrapper.get()<<endl; wrapper1<global_var>gwrapper1; gwrapper1.set(2); cout<<gwrapper1.get()<<endl; return 0; }