I might need some suggestion: result_of_eval is used for instantiating the caller_traits of parser/directive -- should I keep the info that the type is value or reference, and let the user decide how to deal with it in caller_traits, or should I remove reference and const at the first place?