In my code I am going to use a typedef for the readability and whatnots, but I like knowing the intricaces of what a type really is, and am wondering why one of these compiles and one does not.

Code:
    blooz ( bleez::* r ) ( void ) const [ 4 ] =
    {
        &blaz::doo,
        &blaz::boo,
        &blaz::roo,
        &blaz::koo
    };
    

    typedef blooz ( bleez::*T ) ( void ) const;
    T t [ 4 ] =
    {
        &blaz::doo,
        &blaz::boo,
        &blaz::roo,
        &blaz::koo
    };
The first one (non-typedef'd) gives me the errors:

Code:
Error	1	error C2090: function returns array

Error	2	error C2440: 
    'initializing' : cannot convert from 
        'CPoint (__thiscall RotatingPong::CRotatingSquare::* )(void) const' to 
        'CPoint *(__thiscall RotatingPong::CRotatingSquare::* )(void) const'