IssueRaiser

In a struct!

In a struct! Pseudo code for extracting the types from subclasses and calling a multimethod on them: template <typename Result, typename Head, typename ...Tail> struct Foo : Visitor { Result res; UntypedList lst; &#x2F;&#x2F; This does not exist! Tail... tail; &#x2F;&#x2F; This is not possible! Foo(UntypedList l; Head hd, Tail... tl) : lst(l), tail(tl) { hd->accept(*this); } void visit(float *f) { res = Foo<Result, Tail...>(append(lst, f), tail)::res; } } }; &#x2F;&#x2F; Base case that calls the multimethod omitted. There are two issues here: You can't store the parameter pack in Foo() which is later required by the continuation in visit(). And you would have to use tuples and tuple_cat() instead of UntypedList. Why can the compiler not infer the types in such an UntypedList? Why is there no car&#x2F;cdr for tuples?

Posted by jasfas on Sep 14, 2024, 6:17 PM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.7,000 issues0 comments

hackernews (Software)

In a struct!

jasfasSep 14, 2024, 6:17 PM

In a struct! Pseudo code for extracting the types from subclasses and calling a multimethod on them: template <typename Result, typename Head, typename ...Tail> struct Foo : Visitor { Result res; UntypedList lst; &#x2F;&#x2F; This does not exist! Tail... tail; &#x2F;&#x2F; This is not possible! Foo(UntypedList l; Head hd, Tail... tl) : lst(l), tail(tl) { hd->accept(*this); } void visit(float *f) { res = Foo<Result, Tail...>(append(lst, f), tail)::res; } } }; &#x2F;&#x2F; Base case that calls the multimethod omitted. There are two issues here: You can't store the parameter pack in Foo() which is later required by the continuation in visit(). And you would have to use tuples and tuple_cat() instead of UntypedList. Why can the compiler not infer the types in such an UntypedList? Why is there no car&#x2F;cdr for tuples?

Comments (0)

No comments yet. Start the discussion.

Comment on this issue