Why is heap allocation and shared_ptr required? Can't you have the user store the widgets in whatever manner they want, as values?
This seems like someone who isn't up to date with the most elegant and fastest ways to write C++. Charging money on top of that is egregious, not to mention that there are lots of great GUI libraries already. FLTK, Juce, Qt to name a few.