参照の戻り値に対して代入する

メンバ関数に代入する - (void*)Pないとの時にも調べたのですが、メンバ関数に限らず戻り値が参照の場合にその関数を左辺値として扱うことができるようです。

#include <iostream>
using namespace std;

int& foo (int& num) {
    return num;
}

int main () {
    int num = 10;
    
    // 戻り値が参照の関数に対して代入
    foo(num) = 200;
    
    cout << num << endl;
    return 0;
}
$ main
200

戻り値が参照型なのでそこに対して代入処理を行うのは構文上正しいということになります。