Здравствуйте, Marty, Вы писали:
M>Они под капотом, и пользователь с ними не сталкивается
Пока не допустит где-то ошибки.
M>Это проблема не языка, а отдельных компиляторов.
Корень проблемы находится в языке. Компиляторы лишь в разной степени пытаются ее смягчать.
M>Слышал, кстати, что Clang умеет более менее внятно сообщать об ошибках.
Возможно. Но подбирать компилятор, лучше других умеющий заметать мусор под ковер — так себе идея.
M>Проблема не в диагностике, а во внятных сообщениях об ошибках.
Главная проблема в том, что в языке до сих пор нет внятных средств для построения сложных и одновременно понятных и надежных метаконструкций. Все остальное — лишь следствия.
M>Почему-то мейнстрим компиляторы не парятся внятно о них сообщать, это да.
Прежде всего потому, что компилятор не обладает сведениями об идеях автора, использующего трюки, поэтому сообщает лишь о том, что непосредственно видит. Чтобы компилятор мог сообщать более внятно, ему необходимо исследовать текст сверх того, что необходимо для его компиляции. Неудивительно, что мало кому это интересно.
Попробуйте добиться от дизассемблера внятного отображения программы, активно использующей самомодификацию, переходы внутрь кода команды и подобные трюки, если он специально этому не обучен. Попробуйте добиться от спеллчекера внятной диагностики нарушения логических связей высших порядков, не добавляя в него ИИ. И так далее.
M>прорекламировать свою тулзу, которая из портянки сообщения MSVC делает более менее внятное сообщение:
Спасибо, но сообщения MSVC об "обычных" ошибках меня вполне устраивают, а связываться с шаблонными библиотеками я остерегаюсь.