描述可能令人难以置信,所以我直接进入示例:
#include <iostream>
#include <typeinfo>
using namespace std;
template<typename T> class fr{
static void privatestuff(){
cout<<"private of "<<typeid(T).name()<<endl;
}
public:
template<typename TT> void callsomeone(){
fr<TT>::privatestuff();
}
//template<typename TT> friend void fr<TT>::callsomeone<T>();
//template<> template<typename TT> friend void fr<TT>::callsomeone<T>();
//template<typename TT> template<> friend void fr<TT>::callsomeone<T>();
//no other combinations... how to get it?
};
int main(){
fr<bool> obj;
obj.callsomeone<int>();
}
基本上,我希望 fr 能够调用fr<int>::privatestuff
. 但我也希望不要暴露超出需要的内容,因此与only、 not或其他人交fr<int>
朋友。 fr<bool>::callsomeone<int>
fr<bool>::callsomeone<char>
如果需要,我可以依靠 c++11。