Неопределенная ссылка на конструктор строк с определенным компилятором и флагамиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неопределенная ссылка на конструктор строк с определенным компилятором и флагами

Сообщение Anonymous »

Совершенно минимальный источник:

Код: Выделить всё

#include 

int main() {
std::string S;
}
Когда я пытаюсь скомпилировать его с помощью GCC 15.2.1 и флагов -std=c++17 -fconcepts -fsanitize=undefined -O2, я получаю неопределенную ссылку на символ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E (полная ошибка, больше ничего от компоновщика). Насколько я понимаю, это искаженная форма конструктора std::__cxx11::basic_string::basic_string() [with T = char, std::is_default_constructible_v = true], хотя c++filt не может его разобрать.
Ошибка компоновщика исчезает при удалении дезинфицирующего средства, переключении на -O0 (но не -O1), удалении -fconcepts или переключении на C++14 или C++20. Ссылка — реплицирована в Compiler Explorer с GCC 15.2.0. GCC устанавливается из репозиториев Arch Linux, и связанный /usr/lib/libubsan.so.1 также из этих репозиториев, пакет gcc-libs 15.2.1 - ничего особенного.
Я не знаю, пробовал ли я что-то, чего не должен был делать, или это ошибка компилятора. Что вызывает эту ошибку компоновщика?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -and-flags
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»