Я наткнулся на некоторое поведение, которое происходит в сочетании с библиотекой C ++ 11 PEG PEGTL. К сожалению, я не способен воспроизвести это поведение вне функции / шаблонов библиотек. Это произошло с Netbeans
Минимальный пример будет выглядеть так:
include <tao/pegtl.hpp>
using namespace tao::TAOCPP_PEGTL_NAMESPACE;
struct foo : istring<'f','o','o'> {};
struct bar : TAOCPP_PEGTL_ISTRING("foo") {};
struct foo2 : istring<'f','o','o'> {};
TAOCPP_PEGTL_ISTRING — это макроопределение, которое расширяется до istring<>, поэтому TAOCPP_PEGTL_ISTRING («foo») совпадает с istring<‘Е’, ‘о’, ‘о’>.
GCC не имеет проблем с этим, но как только я пытаюсь использовать этот макрос, он говорит
unexpected token: {
unexpected token: }
unknown identifier bar
и каждая следующая строка тоже получает ошибки.
Вот информация о моей Системе / Netbeans:
Product Version: NetBeans IDE 8.2 (Build 201609270201)
Updates: NetBeans IDE is updated to version NetBeans 8.2 Patch 2
Java: 1.8.0_101; Java HotSpot(TM) 64-Bit Server VM 25.101-b13
Runtime: Java(TM) SE Runtime Environment 1.8.0_101-b13
System: Linux version 4.13.0-36-generic running on amd64; UTF-8; en_US (nb)
Задача ещё не решена.
Других решений пока нет …