>>478
評価の順と関数の実行が同じとは限らない。
だったかな

要するに cout<<s2@<<test(s2)A<<s2B;

君の考えでは@の評価、関数test(s2)Aが実行されtest(s2)Aの評価、最後にs2Bが評価される、だろうけど
実際には先ににtest(s2)Aが実行され、その後s2@の評価、test(s2)Aの評価、s2Bの評価と続く
って感じと思う