С учетом следующих объявлени, какие варианты вызова функции можно использовать?

T obj; 
void foo(T *); 

foo(*obj);
foo(&obj);
foo(~obj);
foo(obj);
foo(@obj);