Yes it does work because boost:shared_ptr overloads operator*, and epgTag->foo() - doesn't because CFileItem hasn't constructors for *Ptr types.