I assume you meant "A::x = q;" (and string_to_utf8())?
No, I ment what I wrote. utf8_to_string() throws errors if the argument isn't a valid UTF-8 string. The assignment to q is there to ensure that the call isn't optimized away. The result is thus a variable where it is only possible to store valid UTF8-strings.
If you use "::`x=(q);" instead it will work.
True, I forgot that I had removed the forced private of the getter/setter functions. From program.c:
/* NOTE: The function needs to have the same PRIVATE/INLINE * behaviour as the variable for overloading to behave * as expected. * * FIXME: Force PRIVATE? */