Я знаю, что c++ позволяет переопределить оператор new, но мне нужно немного другое. Хочется сделать оператор smartNew, который будет работать в точности как new за тем исключением, что возвращает он умные указатели. На ум приходит решение не базе шаблонов (чтобы получить sizeof), но, возможно, у кого-то есть уже готовое нормальное решение?
Чем вам не угодила запись shared_ptr obj = new MyObj();
В любом случае, в С++ вы не можете создать свой оператор (smartNew), только переопределить существующие. Определить new, который бы возвращал умный указатель тоже нельзя, т.к. new обязан вернуть void*. Я бы вам советовал не изобретать невероятные конструкции, а использовать то, что предлагает язык.