Зависит от того, что вы имеете в виду под «явным запретом выделения кучи».
Если вы просто хотите предотвратить прямое распределение в куче, то есть ::1003*
NotOnTheHeap *n = new NotOnTheHeap();
это достаточно хорошо. Но это не помешает тому, что ваш объект вообще существует в куче.
Например, это не помешает людям использовать std::vector <NotOnTheHeap>
, который будет распределять объекты из вашего класса в куче.
Это также не помешает людям использовать NotOnTheHeap
в качестве переменной-члена в другом классе, который расположен в куче.