アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
一瞬、魚の骨のAA?って思った (スコア:1)
Java全盛&やっとC++も落ち着いてきた今の時勢にC++の亜種って…
とりあえずどういうターゲッティングなんでしょうか。
ずっとC/C++でやってきたから今さらJavaに乗り換えるのイヤだけど他の言語を触りたい
なんてニッチなターゲットぐらいしか無いような気がしますが
はてさて
Re:一瞬、魚の骨のAA?って思った (スコア:2, 参考になる)
C99 とか Fortran 2003 みたいなもの。
処理系がまともに対応してくれるかは別の話だけど、GCC は大丈夫だろうし、VC++ もそのうち対応するだろうし。
Re:一瞬、魚の骨のAA?って思った (スコア:1, 参考になる)
C++0xの「0x」って、この「99」とか「2003」とかのことなのかな。
199x年みたいな。
で、とりあえず2010年目指してるけど、ずれ込むかもしれないから念の為「x」で伏せとけ、と。
#Fortran 2003なんてあったのか。
0xって (スコア:1, 参考になる)
もともと、目指していたのは『遅くとも2009年』だったように記憶してます。
(策定途中から0xは16進表記だ、という話もあったとか、なかったとか)
まぁ。C++プログラマ的には、今回の仕様更新は大歓迎です。すてきな機能が盛りだくさんで。
Re:0xって (スコア:1, 参考になる)
C++0xの言語拡張まとめ(※随時更新)[http://d.hatena.ne.jp/faith_and_brave/20071022/1193052163]
別のこと探していたらgoogleかかった。
いろいろな物が追加されるけど。
なんで __scope__ みたいなものは無いんだろう。。
だれも不便に思ってないのかな?
__func__ の拡張でもいい
あとは、 break label みたいなラベル指定できるジャンプがほしいですね。
ループのネストは工夫で何とかなるけどいつもswitchではまって
結局、if() else if() になるんですよねぇ。
たとえば、こんなコード動かしたい!
while() loop_1:
{
for() loop_2 :
{
switch()
{
case :
continue loop_1;
default:
fprintf(stderr, "%s::%s@%ld\n", __scope__, __func__, __LINE__);
break loop_2;
}
}
}
lamda 実装される時、一緒にやってもらえないだろうか。。。
Re: (スコア:0)
その例なら本質的に同じだけど。
Re: (スコア:0)
ただの好みとして、戻るためにgotoは使いたくないっていうのと
最近のLLだとラベルを指定するのが普通になってきたから
そろそろ、C/C++にも追加されないかなーと期待したいだけです。
たとえば、gotoでかくとこんな感じになるじゃないですか、
goto でジャンプした結果、ループの先頭に戻るとかよくないと思うんですよね。
やっていることの本質は変わらないですけど、
やっぱりコーディングは見た目も大切だと思うのです。
トレースは基本、上から下に流れますし、
書いた本人でないとみづらくないですかね。。。
while()
{
for()
{
Re: (スコア:0)
continue_loop_2:
のほうがいいでしょう。
適切な名前が付いていれば(continue_loop_2は適切です)、読みやすさの点でも名前つきbreakと変わりはないと思いますよ。
名前つきbreakはいいアイデアだとは思いますが、あれはスコープの外側にしか飛べないgotoで、reducibilityという点ではgotoと変わりません。
Re: (スコア:0)
> for() {
> continue_loop_2:
> のほうがいいでしょう。
今コンパイラが手元にないので確認できてないのですが、
これってcontinueになります?
無限ループに陥りそうな予感なんですが、
言語的にここに書くと、うまい具合に処理してくれるようになっているのでしょうか?
どちらにせよ、continueとbreakで記述場所がループの内外で変わるので、
記述間違いでバグを呼びそうな気がしますし、
ラベル名に continue_ とかの prefix つけるような運用も面倒ですよね。
やっぱり、ループラベル指定で break,continue できるシンタッ
Re: (スコア:0)
> これってcontinueになります?
for文の()の中身が空なので動作に違いはありません
と思ったが;;がないのでコンパイルエラーになりますね
for文の一般形式の場合は、for文本体の最後にcontinue_L1みたいなラベルをつけるのが一番だと思います。(fortranみたい^^)
Pascalのように構造化プログラミングにこだわりすぎて、ネストしたブロックの脱出にフラグを使うのは本末転倒ですが、
そもそもプログラミングスタイルとして、ネストしたブロックからの脱出の、ラベリングが面倒になるほどの*濫用は*褒められたものではないと思います。
(名前つきbreakにしたところで、濫用は良いスタイルとは言えません)
C/C++の場合はswitch文の使い勝手がいまいちというところはありますがね…
Re: (スコア:0)
> と思ったが;;がないのでコンパイルエラーになりますね
他の人の例も全部含め、()の中が空なのは、
書き方の例だから省略しただけでしょ。
Re: (スコア:0)
Re: (スコア:0)
かくいう自身も、2000年過ぎたからフタケタでいいや!ってヤッチまいますし。