Я ожидаю нарушения доступа или
ничего подобного, но я бы никогда не ожидал
что содержание статического конста
строка может измениться.
Неопределенное поведение: оно не определено. Если CONST_STR был уничтожен, то вам не гарантировано аппаратное исключение, если вы получите к нему доступ. Может произойти сбой, но с другой стороны, его адрес может содержать данные, которые выглядят как пустая строка: его деструктор может очистить указатели или что-то еще.
В этом случае вы говорите, что экземпляр A также хранится в глобальном интеллектуальном указателе, который назначается в main (). Таким образом, CONST_STR был создан при обращении к нему в конструкторе A, но вполне возможно, что он уничтожен до уничтожения умного указателя. Нам нужна вся программа, чтобы сказать наверняка.
[Редактировать: вы сделали это. Поскольку CONST_STR и g_aStuff определены в разных единицах компиляции, их относительный порядок построения не определен стандартом. Я предполагаю, что CONST_STR уничтожается первым.]