At runtime, I map *::_ to a sub which does the translation, but at compile time, I map *::_ to a sub which blesses the string into a simple overloaded class
How is that possible? Sure you can redefine _, but that won't do any blessing at compile time.