| 804 | typename NewRuleLocals, |
| 805 | typename NewRuleParams> |
| 806 | auto make_rule_context( |
| 807 | parse_context< |
| 808 | DoTrace, |
| 809 | UseCallbacks, |
| 810 | I, |
| 811 | S, |
| 812 | ErrorHandler, |
| 813 | GlobalState, |
| 814 | Callbacks, |
| 815 | Attr, |
| 816 | Val, |
| 817 | RuleTag, |
| 818 | RuleLocals, |
| 819 | RuleParams> const & context, |
| 820 | NewRuleTag * tag_ptr, |
| 821 | NewVal & value, |
| 822 | NewRuleLocals & locals, |
| 823 | NewRuleParams const & params) |
| 824 | { |
| 825 | using result_type = parse_context< |
| 826 | DoTrace, |
| 827 | UseCallbacks, |
| 828 | I, |
| 829 | S, |
| 830 | ErrorHandler, |
| 831 | GlobalState, |
| 832 | Callbacks, |
| 833 | Attr, |
| 834 | std::conditional_t<std::is_same_v<NewVal, nope>, Val, NewVal>, |
| 835 | NewRuleTag, |
| 836 | std::conditional_t< |
| 837 | std::is_same_v<NewRuleLocals, nope>, |
| 838 | RuleLocals, |
| 839 | NewRuleLocals>, |
| 840 | std::conditional_t< |
| 841 | std::is_same_v<NewRuleParams, nope>, |
| 842 | RuleParams, |
| 843 | NewRuleParams>>; |
| 844 | return result_type(context, tag_ptr, value, locals, params); |
| 845 | } |
| 846 | |
| 847 | template< |
| 848 | bool DoTrace, |