>>821
見やすさなら従来通りの do-while がいい。問題はスコープなだけで。

do {
bool flag = ...
} while (flag);

頭でflagを確定させられる場合は、これはいわゆる従来記法

while ((line = sr->Readline())!=nullptr) {
...
}

とほぼ等価になる。が、(本来の)今風なのは上側の do-while だと思う。
なおfor文で do-while はGoがやっていて、

for (bool flag=true; flag; flag = update_flag()) {

}

の構成らしい。ただこれは見る限り駄目だろ。


ただし確かに実行コードとしては、頭の条件判定が抜けるだけでしかない。
以下を見れば一瞬で「絶対に一度は入る」とは分かるから、
コンパイラが最適化してくれるのなら、行数が1行増えること以外には問題はない。
が、俺はこの1行にもこだわりたいんだが。

while (1) {
...
if (condition) break;
}