CString была тщательно разработана для передачи в виде списка переменных аргументов, поэтому использовать его таким образом безопасно. И вы можете быть совершенно уверены, что Microsoft позаботится о том, чтобы не нарушить это конкретное поведение. Поэтому я бы сказал, что вы можете продолжать использовать его таким образом, если хотите.
Тем не менее, лично я бы предпочел актерский состав. Строковые классы не так часто ведут себя (например, std :: string так), и для ментальной согласованности может быть лучше просто сделать это «безопасным» способом.
P.S .: См. thread для подробностей реализации и дальнейших примечаний о том, как разыгрывать.