Здравствуйте, x-code, Вы писали:
XC>когда мы пишем в функции
XC>const char *t = "Hello world";
XC>всем понятно что сама строка "Hello world" существует не на стеке, а в статической памяти.
Формально — никто этого не гарантирует
Компилятор или линковщик может ее вообще не включать в результирующий файл, если сочтет, что она не используется
XC>И есть ли какие-то преемлемые решения создания безымянных статических объектов произвольного типа прямо в выражении?
XC>Пока едиственное что пришло в голову — вот такое, и завернуть это в макрос
XC>D* d = []()->D* { static D _d("Hello"); return &_d;}();
Не проще ли использовать кошерный static, не придумывая подобных костылей? Вообще, чего ради весь сыр-бор, так часто требуется?
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)