CEpfInfoTagPtr is boost::shared_ptr. So "CEpgInfoTag \*" should be implicitly converted to "boost::shared_ptr<CEpgInfoTag>". It's not allowed with new compilers.
Why do we need new object? shared_ptr must do all dirty work.
And according to [boost docs](http://www.boost.org/doc/libs/1_53_0/libs/smart_ptr/shared_ptr.htm#BestPractices), it's bad idea to use "new" with shared_ptr in function call.