Compiler Error C2786

'type' : invalid operand for __uuidof

The __uuidof operator can take either a user defined type with a GUID attached or an object of such a user defined type as its argument. This error occurs in the following situations:

For example:

struct __declspec(uuid("00000000-0000-0000-0000-000000000000")) A {
};

void foo(void)
{
    __uuidof(int);      // error C2786
    __uuidof(int *);   // error C2786
    __uuidof(A **);      // error C2786

// no error
    __uuidof(A);
    __uuidof(A *);
    __uuidof(A &);
    __uuidof(A[]);

    int i;
    int *pi;
    A **ppa;

    __uuidof(i);   // error C2786
    __uuidof(pi);   // error C2786
    __uuidof(ppa);   // error C2786
}