エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

C++のイディオムは、バッドノウハウか?

vector<int> n;
// do something ...
vector<int>().swap(n); // n を空にする

コンテナを空にする方法として、各所で紹介されているC++STLのイディオム。これはこれで、スマートかもしれないけれど、やっぱり自然ではないような。

C++の習得の難しさは、言語仕様の難しさもさることながら、イディオムの多さのような気がします。しかも。イディオムにそわない書き方をしても、それもまた正しいC++のプログラムなわけで。
仕様が柔軟なことで、さまざまな表現ができるわけですが、学習途上の人にとっては、とらえどころのないものになっている気がします。コーディングルールなどで道しるべをつけたりしますが、どこか本末転倒。

思いつきですが。イディオムを仕様に取り込んで、扱いやすくするという選択肢も、ありかもしれません。自由が制限されますが、もともとイディオムで制限されるのなら、利用者としては変わりないような。