Я только выяснил, что следующий код не является допустимым С++ (он не анализируется при int
после ~
):
int x = 5;
x.~int();
Однако работает следующий фрагмент:
int32_t x = 5;
x.~int32_t();
Это потому, что int32_t
является typedef
в моей конкретной реализации С++, и деструктор, по-видимому, может быть вызван любым типептическим типом.
Мой вопрос: является ли любая реализация С++ необходимой для компиляции второго файла? В частности, гарантируется, что int32_t
является typedef, и компилятор должен разрешить уничтожение typedef, если он знает, что typedef typedefs что-то для int?