https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99846
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- This still means that comparisons on Value objects use the comparison operators from the Variant base, and those comparisons depend on the alternative types in the variant. One of those is list<Value>, and comparisons for list<Value> depend on comparisons for Value. You are back where you started.