それは許されない。
ただし、これは許可されています。
template <std::string * temp> //pointer to object
void f();
template <std::string & temp> //reference to object
void g();
C ++ Standard(2003)の§14.1/ 6,7,8を参照してください。
図:
template <std::string * temp> //pointer to object
void f()
{
cout << *temp << endl;
}
template <std::string & temp> //reference to object
void g()
{
cout << temp << endl;
temp += "...appended some string";
}
std::string s; //must not be local as it must have external linkage!
int main() {
s = "can assign values locally";
f<&s>();
g<s>();
cout << s << endl;
return 0;
}
出力:
can assign values locally
can assign values locally
can assign values locally...appended some string