Более простой вывод ошибок компиляции шаблона C ++ - PullRequest
0 голосов
/ 09 декабря 2018

При работе с шаблонами в C ++ любые ошибки приводят к значительному выводу компилятором.В большинстве случаев, когда я работаю над чем-то, большая часть этой информации является шумом, и мне приходится прокручивать в поисках интересующей меня информации, например:

  • Каждый кандидат в шаблон указан в списке.Я редко использую этот длинный список, и он просто загромождает вывод.
  • Псевдонимы для специализаций шаблонов расширены, например, std::string записывается как std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, или расширенные объявления typedefs / alias.Я бы предпочел, чтобы они были расширены для более удобного чтения.

Возможно ли в g ++ или clang уменьшить все это для более короткого / более простого вывода?

Очевидно, что информация может бытьважно, но тогда я бы предпочел снова скомпилировать с большей детализацией и сделать ее краткой и простой по умолчанию.

1 Ответ

0 голосов
/ 09 декабря 2018

К сожалению, сейчас нет возможности справиться с этим.C ++ 20 решает эту проблему путем введения концепций , где шаблоны могут иметь абстрактные определения, которые ограничены всем, кроме их двоичного макета.Нарушение этих определений приведет к простым ошибкам.

В настоящее время я копаюсь в этих строках и привык к этому.В настоящее время я имею дело с программой с 5 параметрами шаблона на местах.Все дело в том, чтобы привыкнуть к этому и научить глаз разбирать контент.

Однако, если вы действительно застряли, я могу предложить одно решение: скопировать все соответствующие сообщения об ошибках в какой-либо редактор и выполнить поиск и замену, чтобы упростить отдельные выражения, сделать их меньше именьше с каждой заменой, пока он не станет читабельным для вас.Хорошие навыки в регулярных выражениях также могут помочь.В Notepad ++ (или Notepadqq в linux) вы можете найти регулярные выражения и использовать группы записи при замене на \1 для первой группы захвата, \2 для второй и т. Д.

Итак, нижняя строка: доC ++ 20, нет чистого решения для этого, кроме того, что вы сами изобрели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...