I avoid coupling as much as I can. If there is coupling, by design (e.g. the TST and nodes), I use a class or struct with private members. I also do that when the class/struct is resented as-is to the world (again e.g. TST things). FWIW, I dislike friends (at least the c++ types :-P ... i hate it that friends can access private parts!).

That being said, I am not against classes and private members as long as there's consistency. But we have to ask ourselves one very important question: is it really worth it? After more than a decade with Fusion, Spirit and Phoenix, I've never encountered a real problem stemming from this privacy issue.