So I need to represent, in C++, a structure like "a Value can be a bool, a string, a list of Values, or a map from string to Value"
This should be easy, something like:
class Value;
using String = std::string;
using List = std::vector;
using Map = std::unordered_map;
class Value {
// something tagged-union-like
};
However unordered_map can't have incomplete types as a parameter, even though it's totally possible T_T unordered_map is just pointers #cpp #programming