Ahoj, hraju si s novými třídami v C++ a chtěl jsem použít “variant” pro reprezentaci a vyhodnocení jednoduchých aritmetických výrazů. Napsal jsem tedy generický typ Expr dědící z variant<T,Add<Expr<T>>,Mul<Expr<T>>>
ovšem překladač hlásí, že šablonu nelze specializovat (když chci třeba Expr<int>, překladač hlásí “field has incompatible type Expr<int>”). Nevíte, kde je chyba?
A to jsem se ani nedostal k vyhodnocování, kde mi použití “index()” přijde dost jako bad practice, jak byste to vyhodnotili vy?