conditionally use auto return type
remove box (use erase_unique instead)
remove wrap (use erase_shared instead)
remove make_wrapped