パスワードを忘れた? アカウント作成
311849 story
プログラミング

C++0x の最終国際規格案が委員会を通過、夏にも発行予定 58

ストーリー by reo
C++ の優位性って今ではどこにあるのだろう 部門より

dodonga 曰く

3 月 21 〜 25 日にマドリードで開催された ISO C++ 会議において最終国際規格案 (FDIS) が承認され、今年の夏にも発行される予定となった (Herb Sutter 氏のブログ記事より) 。

前回 C++ 標準である C++03 の発行から実に 8 年を経た 2011 年に C++0x が承認・発行されることとなり、発行以降は C++ 2011 となる見込み。

現状で、読みやすい C++0x に関する文書としては Bjarne Stroustrup の FAQ、およびその日本語訳であろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2011年03月28日 13時20分 (#1926754)
    既に新しい文法の一部が使えたり、tr1としてライブラリが使えるコンパイラがありますが
    しばらくは古いコンパイラを考慮してスマートでない複雑な構文を用いたり、
    boostを使ったりしないといけないのが歯がゆいです。

    大半の人がVC6の腐ったtemplateを考慮しなくなったのは
    C++の仕様が固まってから何年後くらいですかねえ。
    # もちろん必要な人は未だに考慮していると思いますが
    • by Kuritsukasa (41955) on 2011年03月28日 15時31分 (#1926825)
      C++でプログラムを書くというと,VC++でGUIプログラムを書くと誤解する人が多かったな.未だにVC++がC++についての誤認識を広めた印象というか偏見が抜けない.
      親コメント
    • by Anonymous Coward

      Win9xのことを考慮しなくてよくなってからではないですかね。
      VC8以降で生成したバイナリはWin9xでは動きませんから。
      Firefoxの場合は3.5あたりからVC6でのビルドはできなくなって、VC6対策のコードを一掃しました。

    • by Anonymous Coward
      未だテンプレートもストリームもろくに使わない俺はダメな子
      CObjectクラスなんか継承した事もない
      • by ikotom (20155) on 2011年03月29日 9時47分 (#1927140)

        マジレスするとそれが許されるのがマルチパラダイム言語かと。

        templateがチームの技量に合わないなら使う必要はないし
        オブジェクト指向の数step/数byteが実装系のネックになるならベターC/ベターアセンブラとして使えばよいし
        下請けでなく社員皆すーぱーはかーという幸運な環境ならlambdaなり何なり変態の道を極めるもよし。

        C++の複雑性は、その一部のみを切り取って俺様サブセットを使用する自由を守ろうとしたが為ですから
        どうぞ貴方(andチームand実装系)に都合が良い部分のみを使用してください。

        親コメント
  • by Ryu-TK (1420) on 2011年03月29日 4時57分 (#1927122)

    C++0x基礎文法最速マスター [hatena.ne.jp]あたりを見れば大体の感じが掴めるのじゃないかと。

    initializer_list [ocn.ne.jp]や範囲 for 文 [ocn.ne.jp]あたりは地味に便利というか、なぜ C++ 03 に入っていなかったのかレベル

    • by Anonymous Coward

      前からあったほうの関数宣言なんですけど、レガシーコードの保守以外にメリットあるんですかね?
      新しい方を推奨にしちゃえよって気がするんですが。

      • by dodonga (4178) on 2011年03月30日 14時29分 (#1927852) 日記

         dodongaです。

         格上げの問題なので、慎重に;

         C言語の場合:
         以下の4通りが考えられます。

        1. K&R 関数宣言で、K&R 関数定義
        2. ANSI関数宣言で、ANSI関数定義
        3. ANSI関数宣言で、K&R 関数定義
        4. K&R 関数宣言で、ANSI関数定義

         1,2は問題ないです。
         3の場合、関数定義で小さな型を使うと問題が。実際の型で渡されるのに関数では格上げを期待
         4の場合、関数定義で小さな型を使うと問題が。格上げされたのを期待してるのにそのままの型で渡される。

         C++言語の場合:
         K&Rは認めれられて無く、プロトタイプが必須なので問題なし。

         CとC++では、格上げにも非互換あるので、なんとも;;

        --
        閑話休題
        親コメント
        • 今回の変更(N2541 [open-std.org])は syntax のみの変更なので互換性の問題にはならないかと。

          // 今まで
          int hoge(int var) { ... }
          // C++0x で可能になる記法
          auto hoge(int var) -> int { ... }

          後者の記法は、戻り値の型が複雑な場合に簡単に書けるようになるという利点があります。 例えば、関数ポインタを返す関数を定義する場合、従来だと typedef を使って書いていたものが、

          auto fpif(int)->int(*)(int)

          のように書けるようになります。 また、引数が戻り値の部分でも使えるようになるため、 C++0x で追加された decltype という式の型を表現するキーワードを使うと

          template <class F, class T>
          auto apply(F f, T t) -> decltype(f(t)) { return f(t); }

          と書けるようになります。 従来の関数定義の記法だと、f も t もスコープに入っていないので

          template <class F, class T>
          decltype(f(t)) apply(F f, T t) { return f(t); } // compile error

          とは書けません。

          親コメント
  • by Anonymous Coward on 2011年03月28日 12時06分 (#1926712)

    >現状で、読みやすい C++0x に関する文書としては Bjarne Stroustrup の FAQ、およびその日本語訳であろうか
    リンクが両方404なんですが私だけでしょうか。

  • by Anonymous Coward on 2011年03月28日 14時06分 (#1926778)

    ×最終国際企画案
    ◯最終国際規格案

    • Re: (スコア:0, オフトピック)

      おっほい、ご指摘 thx です。修正しました。

      --
      Hiroki (REO) Kashiwazaki
      • by Anonymous Coward
        題名って直せないんでしたっけ?
        • Re: (スコア:0, オフトピック)

          ああっ、気付きませんでした。修正しました、ご指摘 thx 。

          # そしてどんどんカルマが減っていく……。

          --
          Hiroki (REO) Kashiwazaki
          • by Anonymous Coward

            修正とカルマって?

            • by Anonymous Coward

              自分の修正コメをマイナスモデで沈めてるからでは。

  • by Anonymous Coward on 2011年03月28日 14時52分 (#1926806)
    ぱっと見たときc言語でc++0xて書いたときの挙動を考えるトピかと思った
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...