哪位大哥解释一下这些用法??
struct A {
template <class T> operator T***() {
int*** p = 0;
return p;
}
};
1、
template<class T>
struct X {
virtual void f();
};
template<class T>
struct Y {
void g(X<T> *p) {
p->template X<T>::f();
}
};
2、
struct S { int a:3; int b:3; int c:3; };
void f()
{
struct S s;
const int *p = &(s.b = 0); // (a)
const int &r = (s.b = 0); // (b)
int &r2 = (s.b = 0); // (c)
}
3、
struct A { static void f(); };
struct B1: virtual A {
using A::f;
};
struct B2: virtual A {
using A::f;
};
struct C: B1, B2 { };
void g() {
C::f(); // OK, calls A::f()
}
4、
struct A {
template <class T> operator T***() {
int*** p = 0;
return p;
}
};
struct B {
template <class T> operator T***() {
const int*** p = 0;
return p;
}
};
int main()
{
A a;
const int * const * const * p1 = a;
B b;
const int * const * const * p2 = b;
}
4\
struct B {
template <class T> operator T***() {
const int*** p = 0;
return p;
}
};
int main()
{
A a;
const int * const * const * p1 = a;
B b;
const int * const * const * p2 = b;
}