Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

expected a declaration #301

Closed
mingodad opened this issue Dec 28, 2023 · 3 comments · Fixed by #302
Closed

expected a declaration #301

mingodad opened this issue Dec 28, 2023 · 3 comments · Fixed by #302

Comments

@mingodad
Copy link

While testing cxx with this project https://github.com/peter-winter/ctpg I'm getting this error:

/usr/bin/time ./cxx ctpg/examples/ctjs.cpp -fsyntax-only -toolchain linux -Ictpg/examples/../include
ctpg/examples/ctjs.cpp:455:1: expected a declaration

^
Command exited with non-zero status 1
1.90user 0.04system 0:01.95elapsed 99%CPU (0avgtext+0avgdata 60044maxresident)k
0inputs+0outputs (0major+15748minor)pagefaults 0swaps

clang-16 and g++-13 have no problem with it:

clang-16-env /usr/bin/time clang++ ctpg/examples/ctjs.cpp -fsyntax-only  -Ictpg/examples/../include
1.99user 0.08system 0:02.09elapsed 99%CPU (0avgtext+0avgdata 186508maxresident)k
0inputs+0outputs (0major+33676minor)pagefaults 0swaps

Line 455 is the end of file ctpg/examples/ctjs.cpp .

@mingodad
Copy link
Author

I'm not sure if it has something to do with c++ version/std because when checking it with g++-13 with -std=c++23 the I get this:

gcc-13-env g++ -std=c++23 ctpg/examples/ctjs.cpp -fsyntax-only -Ictpg/examples/../include
In file included from ctpg/examples/ctjs.cpp:5:
ctpg/examples/../include/ctpg/ctpg.hpp: In instantiation of ‘constexpr void ctpg::parser<ctpg::nterm<ValueType>, std::tuple<_UTypes ...>, std::tuple<_Tp ...>, std::tuple<R ...>, LexerUsage, Limits>::state_analyzer::transitions(ctpg::size16_t, ctpg::size16_t, const situation_vector&) [with RootValueType = ctpg::utils::slice; Terms = {ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term}; NTerms = {ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int>}; Rules = {ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, std::integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >}; LexerUsage = ctpg::use_lexer<ctpg::regex::regex_lexer>; Limits = ctpg::default_limits; ctpg::size16_t = short unsigned int; situation_vector = ctpg::stdex::cvector<unsigned int, 506, void>]’:
ctpg/examples/../include/ctpg/ctpg.hpp:2223:32:   required from here
ctpg/examples/../include/ctpg/ctpg.hpp:3366:9:   in ‘constexpr’ expansion of ‘((ctpg::parser<ctpg::nterm<ctpg::utils::slice>, std::tuple<ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int> >, std::tuple<ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, std::integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> > >, ctpg::use_lexer<ctpg::regex::regex_lexer>, ctpg::default_limits>*)(& ctpg::regex::regex_parser::regex_parser_object))->ctpg::parser<ctpg::nterm<ctpg::utils::slice>, std::tuple<ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int> >, std::tuple<ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, std::integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> > >, ctpg::use_lexer<ctpg::regex::regex_lexer>, ctpg::default_limits>::parser(ctpg::regex::regex_parser::expr, ctpg::terms(const Terms& ...) [with Terms = {custom_term<regex::regex_parser::<lambda(auto:50)> >, custom_term<regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, char, char, char, char, char, char, char, char}](ctpg::regex::regex_parser::regex_primary, '*', '+', '?', '|', '(', ')', '{', '}'), ctpg::nterms(NTerms ...) [with NTerms = {nterm<utils::slice>, nterm<utils::slice>, nterm<utils::slice>, nterm<utils::slice>, nterm<utils::slice>, nterm<unsigned int>}](ctpg::regex::regex_parser::alt, ctpg::regex::regex_parser::concat, ctpg::regex::regex_parser::q_expr, ctpg::regex::regex_parser::primary, ctpg::regex::regex_parser::number), ctpg::rules(Rules&& ...) [with Rules = {detail::rule<false, std::nullptr_t, nterm<unsigned int>, custom_term<regex::regex_parser::<lambda(auto:50)> > >, detail::rule<false, regex::regex_parser::<lambda(size32_t, size32_t)>, nterm<unsigned int>, nterm<unsigned int>, custom_term<regex::regex_parser::<lambda(auto:50)> > >, detail::rule<true, regex::regex_parser::<lambda(auto:51&, size32_t)>, nterm<utils::slice>, custom_term<regex::regex_parser::<lambda(auto:50)> > >, detail::rule<true, regex::regex_parser::<lambda(auto:52&, const auto:53&)>, nterm<utils::slice>, custom_term<regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, detail::rule<false, ftors::element<2, std::integer_sequence<long unsigned int, 0> >, nterm<utils::slice>, char_term, nterm<utils::slice>, char_term>, detail::rule<false, std::nullptr_t, nterm<utils::slice>, nterm<utils::slice> >, detail::rule<true, regex::regex_parser::<lambda(auto:54&, regex::regex_parser::slice, skip)>, nterm<utils::slice>, nterm<utils::slice>, char_term>, detail::rule<true, regex::regex_parser::<lambda(auto:55&, regex::regex_parser::slice, skip)>, nterm<utils::slice>, nterm<utils::slice>, char_term>, detail::rule<true, regex::regex_parser::<lambda(auto:56&, regex::regex_parser::slice, skip)>, nterm<utils::slice>, nterm<utils::slice>, char_term>, detail::rule<true, regex::regex_parser::<lambda(auto:57&, regex::regex_parser::slice, skip, size32_t, skip)>, nterm<utils::slice>, nterm<utils::slice>, char_term, nterm<unsigned int>, char_term>, detail::rule<false, std::nullptr_t, nterm<utils::slice>, nterm<utils::slice> >, detail::rule<true, regex::regex_parser::<lambda(auto:58&, regex::regex_parser::slice, regex::regex_parser::slice)>, nterm<utils::slice>, nterm<utils::slice>, nterm<utils::slice> >, detail::rule<false, std::nullptr_t, nterm<utils::slice>, nterm<utils::slice> >, detail::rule<true, regex::regex_parser::<lambda(auto:59&, regex::regex_parser::slice, skip, regex::regex_parser::slice)>, nterm<utils::slice>, nterm<utils::slice>, char_term, nterm<utils::slice> >, detail::rule<false, std::nullptr_t, nterm<utils::slice>, nterm<utils::slice> >}](ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<unsigned int>; R = {ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >}](<lambda closure object>ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = const ctpg::ftors::element<2>&; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term}](ctpg::ftors::_e2), ctpg::nterm<ValueType>::operator()(Args&& ...) const [with Args = {const ctpg::nterm<ctpg::utils::slice>&}; ValueType = ctpg::utils::slice](ctpg::regex::regex_parser::primary), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::nterm<ctpg::utils::slice>, ctpg::char_term}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::nterm<ctpg::utils::slice>, ctpg::char_term}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::nterm<ctpg::utils::slice>, ctpg::char_term}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>()), ctpg::nterm<ValueType>::operator()(Args&& ...) const [with Args = {const ctpg::nterm<ctpg::utils::slice>&}; ValueType = ctpg::utils::slice](ctpg::regex::regex_parser::q_expr), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>()), ctpg::nterm<ValueType>::operator()(Args&& ...) const [with Args = {const ctpg::nterm<ctpg::utils::slice>&}; ValueType = ctpg::utils::slice](ctpg::regex::regex_parser::concat), ctpg::detail::rule<RequiresContext, F, L, R>::operator>>=(F1&&) [with F1 = ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<ctpg::utils::slice>; R = {ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>}](<lambda closure object>ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>()), ctpg::nterm<ValueType>::operator()(Args&& ...) const [with Args = {const ctpg::nterm<ctpg::utils::slice>&}; ValueType = ctpg::utils::slice](ctpg::regex::regex_parser::alt)), (ctpg::use_lexer<ctpg::regex::regex_lexer>(), ctpg::use_lexer<ctpg::regex::regex_lexer>()))’
ctpg/examples/../include/ctpg/ctpg.hpp:1873:61:   in ‘constexpr’ expansion of ‘((ctpg::parser<ctpg::nterm<ctpg::utils::slice>, std::tuple<ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int> >, std::tuple<ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, std::integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> > >, ctpg::use_lexer<ctpg::regex::regex_lexer>, ctpg::default_limits>*)this)->ctpg::parser<ctpg::nterm<ctpg::utils::slice>, std::tuple<ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int> >, std::tuple<ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, std::integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> > >, ctpg::use_lexer<ctpg::regex::regex_lexer>, ctpg::default_limits>::parser(grammar_root, std::tuple<ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>(terms), std::tuple<ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int> >(nterms), (* & std::move<tuple<ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(basic_string_view<char, char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> > >&>((* & rules))))’
ctpg/examples/../include/ctpg/ctpg.hpp:1894:40:   in ‘constexpr’ expansion of ‘sa.ctpg::parser<ctpg::nterm<ctpg::utils::slice>, std::tuple<ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> >, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<unsigned int> >, std::tuple<ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<false, ctpg::regex::regex_parser::<lambda(ctpg::size32_t, ctpg::size32_t)>, ctpg::nterm<unsigned int>, ctpg::nterm<unsigned int>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:51&, ctpg::size32_t)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::regex_parser::<lambda(auto:50)> > >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:52&, const auto:53&)>, ctpg::nterm<ctpg::utils::slice>, ctpg::custom_term<ctpg::regex::char_subset (*)(std::basic_string_view<char, std::char_traits<char> >)> >, ctpg::detail::rule<false, ctpg::ftors::element<2, std::integer_sequence<long unsigned int, 0> >, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:54&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:55&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:56&, ctpg::regex::regex_parser::slice, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term>, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:57&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::size32_t, ctpg::skip)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:58&, ctpg::regex::regex_parser::slice, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<true, ctpg::regex::regex_parser::<lambda(auto:59&, ctpg::regex::regex_parser::slice, ctpg::skip, ctpg::regex::regex_parser::slice)>, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice>, ctpg::char_term, ctpg::nterm<ctpg::utils::slice> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<ctpg::utils::slice>, ctpg::nterm<ctpg::utils::slice> > >, ctpg::use_lexer<ctpg::regex::regex_lexer>, ctpg::default_limits>::state_analyzer::analyze_states()’
ctpg/examples/../include/ctpg/ctpg.hpp:2359:42: warning: C++20 says that these are ambiguous, even though the second is reversed:
 2359 |                     if (states[i].kernel == kernel)
      |                         ~~~~~~~~~~~~~~~~~^~~~~~~~~
ctpg/examples/../include/ctpg/ctpg.hpp:268:24: note: candidate 1: ‘constexpr bool ctpg::stdex::cbitset<N>::operator==(const ctpg::stdex::cbitset<N>&) [with long unsigned int N = 960]’
  268 |         constexpr bool operator == (const cbitset<N>& other)
      |                        ^~~~~~~~
ctpg/examples/../include/ctpg/ctpg.hpp:268:24: note: candidate 2: ‘constexpr bool ctpg::stdex::cbitset<N>::operator==(const ctpg::stdex::cbitset<N>&) [with long unsigned int N = 960]’ (reversed)
ctpg/examples/../include/ctpg/ctpg.hpp:268:24: note: try making the operator a ‘const’ member function
ctpg/examples/../include/ctpg/ctpg.hpp: In instantiation of ‘constexpr void ctpg::parser<ctpg::nterm<ValueType>, std::tuple<_UTypes ...>, std::tuple<_Tp ...>, std::tuple<R ...>, LexerUsage, Limits>::state_analyzer::transitions(ctpg::size16_t, ctpg::size16_t, const situation_vector&) [with RootValueType = long unsigned int; Terms = {ctpg::regex_term<ctjs::number_pattern>, ctpg::regex_term<ctjs::string_pattern>, ctpg::string_term<5>, ctpg::string_term<6>, ctpg::string_term<5>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term}; NTerms = {ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>}; Rules = {ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:61)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::number_pattern> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:62)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::string_pattern> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:63)>, ctpg::nterm<long unsigned int>, ctpg::string_term<5> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:64)>, ctpg::nterm<long unsigned int>, ctpg::string_term<6> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:65)>, ctpg::nterm<long unsigned int>, ctpg::string_term<5> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:66, auto:67, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:68, auto:69, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:70, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:71, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:72, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::string_pattern>, ctpg::char_term, ctpg::nterm<long unsigned int> >}; LexerUsage = ctpg::use_generated_lexer; Limits = ctpg::default_limits; ctpg::size16_t = short unsigned int; situation_vector = ctpg::stdex::cvector<unsigned int, 626, void>]’:
ctpg/examples/../include/ctpg/ctpg.hpp:2223:32:   required from here
ctpg/examples/ctjs.cpp:429:32:   in ‘constexpr’ expansion of ‘((ctjs::json<89>*)(& js))->ctjs::json<89>::json(txt)’
ctpg/examples/ctjs.cpp:382:18:   in ‘constexpr’ expansion of ‘((ctjs::json<89>*)this)->ctjs::json<89>::parse((* & txt))’
ctpg/examples/ctjs.cpp:429:32:   in ‘constexpr’ expansion of ‘ctjs::create_parser(chunks_builder&)()’
ctpg/examples/ctjs.cpp:429:32:   in ‘constexpr’ expansion of ‘ctpg::parser<ctpg::nterm<long unsigned int>, std::tuple<ctpg::regex_term<ctjs::number_pattern>, ctpg::regex_term<ctjs::string_pattern>, ctpg::string_term<5>, ctpg::string_term<6>, ctpg::string_term<5>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, std::tuple<ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:61)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::number_pattern> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:62)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::string_pattern> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:63)>, ctpg::nterm<long unsigned int>, ctpg::string_term<5> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:64)>, ctpg::nterm<long unsigned int>, ctpg::string_term<6> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:65)>, ctpg::nterm<long unsigned int>, ctpg::string_term<5> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:66, auto:67, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:68, auto:69, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:70, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:71, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:72, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::string_pattern>, ctpg::char_term, ctpg::nterm<long unsigned int> > >, ctpg::use_generated_lexer, ctpg::default_limits>(js_object, ctpg::terms(const Terms& ...) [with Terms = {regex_term<ctjs::number_pattern>, regex_term<ctjs::string_pattern>, char [5], char [6], char [5], char, char, char, char, char, char}](js_string, "true", "false", "null", '[', ']', ',', '{', '}', ':'), ctpg::nterms(NTerms ...) [with NTerms = {nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>}](js_object_start, js_array, js_array_start, js_value, js_array_elements, js_object_elements, js_object_element), ctpg::rules(Rules&& ...) [with Rules = {detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:61)>, nterm<long unsigned int>, regex_term<ctjs::number_pattern> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:62)>, nterm<long unsigned int>, regex_term<ctjs::string_pattern> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:63)>, nterm<long unsigned int>, string_term<5> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:64)>, nterm<long unsigned int>, string_term<6> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:65)>, nterm<long unsigned int>, string_term<5> >, detail::rule<false, std::nullptr_t, nterm<long unsigned int>, nterm<long unsigned int> >, detail::rule<false, std::nullptr_t, nterm<long unsigned int>, nterm<long unsigned int> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(skip)>, nterm<long unsigned int>, char_term>, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:66, auto:67, skip)>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, char_term>, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(skip, skip)>, nterm<long unsigned int>, char_term, char_term>, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(skip)>, nterm<long unsigned int>, char_term>, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:68, auto:69, skip)>, nterm<long unsigned int>, nterm<long unsigned int>, nterm<long unsigned int>, char_term>, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(skip, skip)>, nterm<long unsigned int>, char_term, char_term>, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(skip)>, nterm<long unsigned int>, nterm<long unsigned int> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:70, skip, skip)>, nterm<long unsigned int>, nterm<long unsigned int>, char_term, nterm<long unsigned int> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(skip)>, nterm<long unsigned int>, nterm<long unsigned int> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:71, skip, skip)>, nterm<long unsigned int>, nterm<long unsigned int>, char_term, nterm<long unsigned int> >, detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:72, skip, skip)>, nterm<long unsigned int>, regex_term<ctjs::string_pattern>, char_term, nterm<long unsigned int> >}](ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:62)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::regex_term<ctjs::string_pattern>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:62)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:63)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::string_term<5>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:63)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:64)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::string_term<6>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:64)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:65)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::string_term<5>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:65)>{(* & b)}), ctpg::nterm<ValueType>::operator()(Args&& ...) const [with Args = {const ctpg::nterm<long unsigned int>&}; ValueType = long unsigned int](js_array), ctpg::nterm<ValueType>::operator()(Args&& ...) const [with Args = {const ctpg::nterm<long unsigned int>&}; ValueType = long unsigned int](js_object), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::char_term}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:66, auto:67, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:66, auto:67, ctpg::skip)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::char_term, ctpg::char_term}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::char_term}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:68, auto:69, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:68, auto:69, ctpg::skip)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::char_term, ctpg::char_term}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>{(* & b)}), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::nterm<long unsigned int>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:70, ctpg::skip, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:70, ctpg::skip, ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::nterm<long unsigned int>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:71, ctpg::skip, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:71, ctpg::skip, ctpg::skip)>()), ctpg::detail::rule<RequiresContext, F, L, R>::operator>=(F1&&) [with F1 = ctjs::create_parser(chunks_builder&)::<lambda(auto:72, ctpg::skip, ctpg::skip)>; bool RequiresContext = false; F = std::nullptr_t; L = ctpg::nterm<long unsigned int>; R = {ctpg::regex_term<ctjs::string_pattern>, ctpg::char_term, ctpg::nterm<long unsigned int>}](<lambda closure object>ctjs::create_parser(chunks_builder&)::<lambda(auto:72, ctpg::skip, ctpg::skip)>{(* & b)})))’
ctpg/examples/../include/ctpg/ctpg.hpp:1894:40:   in ‘constexpr’ expansion of ‘sa.ctpg::parser<ctpg::nterm<long unsigned int>, std::tuple<ctpg::regex_term<ctjs::number_pattern>, ctpg::regex_term<ctjs::string_pattern>, ctpg::string_term<5>, ctpg::string_term<6>, ctpg::string_term<5>, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term, ctpg::char_term>, std::tuple<ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, std::tuple<ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:61)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::number_pattern> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:62)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::string_pattern> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:63)>, ctpg::nterm<long unsigned int>, ctpg::string_term<5> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:64)>, ctpg::nterm<long unsigned int>, ctpg::string_term<6> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:65)>, ctpg::nterm<long unsigned int>, ctpg::string_term<5> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, std::nullptr_t, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:66, auto:67, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:68, auto:69, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::char_term>, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:70, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:71, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::nterm<long unsigned int>, ctpg::char_term, ctpg::nterm<long unsigned int> >, ctpg::detail::rule<false, ctjs::create_parser(chunks_builder&)::<lambda(auto:72, ctpg::skip, ctpg::skip)>, ctpg::nterm<long unsigned int>, ctpg::regex_term<ctjs::string_pattern>, ctpg::char_term, ctpg::nterm<long unsigned int> > >, ctpg::use_generated_lexer, ctpg::default_limits>::state_analyzer::analyze_states()’
ctpg/examples/../include/ctpg/ctpg.hpp:2359:42: warning: C++20 says that these are ambiguous, even though the second is reversed:
 2359 |                     if (states[i].kernel == kernel)
      |                         ~~~~~~~~~~~~~~~~~^~~~~~~~~
ctpg/examples/../include/ctpg/ctpg.hpp:268:24: note: candidate 1: ‘constexpr bool ctpg::stdex::cbitset<N>::operator==(const ctpg::stdex::cbitset<N>&) [with long unsigned int N = 988]’
  268 |         constexpr bool operator == (const cbitset<N>& other)
      |                        ^~~~~~~~
ctpg/examples/../include/ctpg/ctpg.hpp:268:24: note: candidate 2: ‘constexpr bool ctpg::stdex::cbitset<N>::operator==(const ctpg::stdex::cbitset<N>&) [with long unsigned int N = 988]’ (reversed)
ctpg/examples/../include/ctpg/ctpg.hpp:268:24: note: try making the operator a ‘const’ member function

@mingodad
Copy link
Author

Making some tests I found that this causes trouble to cxx:

namespace ctjs
{
#if 0
    constexpr char number_pattern[] = R"_(\-?(0|[1-9][0-9]*)(\.[0-9]+)?((e|E)(\+|\-)[0-9]+)?)_";
#endif
}

Output:

./cxx -E test-namespace-empty.cpp
>./cxx -E test-namespace-empty.cpp
# 1 "test-namespace-empty.cpp"
namespace ctjs
{

Notice that the namespace is truncated by the preprocessing !

@mingodad
Copy link
Author

The last example without -E:

./cxx  test-namespace-empty.cpp
test-namespace-empty.cpp:7:1: expected '}'

^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant