Определить создаваемость объекта на куче
От: Went  
Дата: 04.10.22 10:52
Оценка:
Здравствуйте. Нужен трейт, чтобы определял, можно ли создать создать объект на куче используя стандартный new или placement new:
auto x = new X();
auto x2 = new (malloc(sizeof(X))) X();

По идее, ограничения два — должен быть публичный конструктор по умолчанию (или с аргументами по умолчанию..., но это не важно), и оператор new не должен быть каким-то образом запрещён.
Поэтому, стандартный std::is_default_constructible не подходит (он, я так понимаю, проверяет возможность создания на стеке и поэтому учитывает доступность деструктора).
Есть какой-то прямой и очевидный способ проверить это, а то велоипеды работают плохо и не везде
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.