Can two classes friend each other?
<p>I haven't yet worked out a specific case. But I am about to embark on writing some code that I feel will end up needing this; and so I wanted to know if:</p>

<ol>
<li>Two classes can friend each other; so that they can freely access the private 
and protected members of the other (I believe the answer is yes, and ofcourse I 
can simply try it out!). Any detailed references or other question links with answers
are also very welcome. I am aware of forward declarations and include guard compiler 
pre-directives and their use. My questions are rather more related to the semantics 
of the C++ language in terms of what it can offer with regard to this possibility 
of mutual friendship and how to use it properly.</li>
<li>Is this generally recommended? Do people employ this kind of design on a regular basis? 
Under what circumstances would this be a recommended design (preferably with some 
examples).</li>
</ol>
