Git Product home page Git Product logo

Comments (3)

mingodad avatar mingodad commented on August 19, 2024

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

from cplusplus.

mingodad avatar mingodad commented on August 19, 2024

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 !

from cplusplus.

mingodad avatar mingodad commented on August 19, 2024

The last example without -E:

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

^

from cplusplus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.