函数模版与访问权限
//============================================================================================================
//函数模版与访问权限的关系
template<typename T> void Outer(T t){
t();
}
class CNestedAccessed{
public:
void call(void){
callOuter();
}
private:
void callOuter(void);
struct CNested{
void operator()(void){
}
};
};
void CNestedAccessed::callOuter(void){
//尽管CNested是CNestedAccessed的私有成员,但Outer<T>(T)仍可访问CNested的公有成员
Outer(CNested());
}
int main(int,char*){
CNestedAccessed NestedAccessed;
NestedAccessed.call();
return 0;
}
我在VC++8下编译通过。
请大家尽量在不同的C++编译器下编译,如果都能通过那就说明函数模版与普通函数的访问权限规则还是有所不同的。