下列类模板中定义正确的是:
A、 template
class A : {       
    T1 b;
    int  fun( int a ) { return T1+T2; }
};
B、template
class A {    
    int T2;
    T1 fun( T2 a ) { return a + T2; }
};
C、template
class A {
    public:
    T2  b;
    T1 a;
    A() { }
    T1 fun() { return a; }
};
D、template
class A {
    T2 b;
    T1 fun( double a ){ b =  (T2) a;    return (T1) a; }
};