1 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 20:29:11 ] The C++ Standards Committee ttp://www.open-std.org/jtc1/sc22/wg21/ 前スレ pc11.2ch.net/test/read.cgi/tech/1149440647/
684 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 03:56:34 ] もうそろそろプリプロセッサには退場してもらいたい #includeだけでいいよ
685 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 05:57:58 ] >>684 ifdefが無いとassertもできなくね? ifdefなんて無いに越したことはないが、必要な部分はあると思うんだが。
686 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 06:36:36 ] 今更プリプロセッサ廃止したらBoost.Preprocessor使いまくりの俺のコードが全滅する
687 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 07:20:11 ] >>681 プリプロセッサ用のスコープか?
688 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 07:37:11 ] 世界はプリプロセッサで出来ている
689 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 11:05:07 ] >>687 そうマクロを制限する。 scope外のマクロ全部無効になって、 scope内のマクロはscopeの外に定義が出ない。 ただし必要なものだけimport/exportできる。 #undefよりはスマートに書けるが、 泥縄的だから標準には入らないと思う。 namescapeを導入した時に、マクロ名も識別子と同様、 namespaceに入ることにしたら良かったんじゃないか。
690 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:56:03 ] まあ「プリプロセッサ」である限り使い勝手は悪いわな。プリプロセッサを廃止して必要な機能を 言語側でちゃんと実装すべきだと思うが、そうするともう C++ とは呼べないだろう。
691 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:58:26 ] >>689 コンパイルフェーズでプリプロセッサが分かれているんだから、 namespace を解釈させるってのは難しいだろうね。
692 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:14:29 ] なーんちゃってプリプリー
693 名前:デフォルトの名無しさん [2008/01/08(火) 13:56:07 ] でもさ,プリプロセッサのおかげで あんなことやこんな変態プレイができるんだぜ?
694 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:20:10 ] プリプロセッサがチューリング完全だったらいいのに
695 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:21:09 ] プリプリ中学生!
696 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:26:57 ] ttp://blogs.msdn.com/vcblog/ C++0x standard
697 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:27:59 ] え?!チューリング完全じゃないの? てっきりそうだと思ってた
698 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:32:01 ] LISPのマクロはチューリング完全だけど C++のプリプロセッサがチューリング完全だとは聞いたことが無い。 テンプレートはチューリング完全だけどね。
699 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:41:35 ] Boost.Preprocessor使えばチューリングマシンぐらい実装できそうな気もするけど 規格でネストのレベルの上限が決まってるとかかな まぁスレ違いか
700 名前:デフォルトの名無しさん [2008/01/09(水) 00:49:51 ] >>697 m4マクロみたいに再帰的定義ができません。 >>698 テンプレートは原始帰納関数しか計算できないのでは?
701 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 10:03:02 ] ビョーン様をハゲと言うのはやめろ!
702 名前:デフォルトの名無しさん [2008/01/09(水) 10:08:49 ] 権威を自分の下に置くことによって優越感を味わっているだけなんだよ 技術力の低い賎民の僻みなんだから気にしたら負けだ
703 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 10:30:20 ] 禿は愛称です
704 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:09:52 ] いじめではなくプロレスごっこです
705 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 12:24:57 ] 禿は偉大だ・・・俺も禿るように頑張るよ。
706 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 13:22:38 ] 禿かわゆす
707 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:35:10 ] ビョーン・ザ・バルドヘッド
708 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:41:43 ] Boost.Preprocessorはすげえよ Boost.MPLやBoost.Lambdaはがんばれば出来る (かもしれない) Boost.Preprocessorは絶対に無理だ
709 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:52:30 ] >>700 アッカーマン関数なら計算できるけど。 template <unsigned long long m, unsigned long long n> struct Ack { %9static const unsigned long long value = Ack<m-1, Ack<m, n-1>::value>::value; }; template<unsigned long long n> struct Ack<0, n> { %9static const unsigned long long value = n+1; }; template <unsigned long long m> struct Ack<m, 0> { %9static const unsigned long long value = Ack<m-1, 1>::value; }; template <> struct Ack<0, 0> { %9static const unsigned long long value = 1; };
710 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:53:18 ] うわ、タブが文字化けした。 もっかい template <unsigned long long m, unsigned long long n> struct Ack { static const unsigned long long value = Ack<m-1, Ack<m, n-1>::value>::value; }; template<unsigned long long n> struct Ack<0, n> { static const unsigned long long value = n+1; }; template <unsigned long long m> struct Ack<m, 0> { static const unsigned long long value = Ack<m-1, 1>::value; }; template <> struct Ack<0, 0> { static const unsigned long long value = 1; };
711 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 20:31:57 ] >>700 チューリング完全だという論文がある。 d.hatena.ne.jp/earth2001y/20060929/p2
712 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 01:24:42 ] 底学歴でさーせんwww チューリングなんてまったく知らないんだけど、勉強した方がいいかな?(;´Д`)
713 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:04:31 ] 少なくとも勉強したほうが悪いということは無いと思うぞ
714 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:05:07 ] 知らなくたってPGは務まる。ってか大多数の職業PGは知らないと思う。
715 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:06:47 ] でも少なくとも情報工学科でたやつは習うでしょ
716 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:08:28 ] 気になるなら調べりゃいい。それが勉強だ。
717 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:17:03 ] >>715 情報系出身だけど一切授業ではやってないよ。 ja.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E7%90%86%E8%AB%96 ↑のページで授業で触れられたものはO記法くらいだなぁ。
718 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:34:46 ] 情報系いうてもピンキリやな
719 名前:712 mailto:sage [2008/01/10(木) 03:32:48 ] ウィキペディア読んできたけど意味わかんね(;´Д`)w
720 名前:デフォルトの名無しさん [2008/01/10(木) 04:50:29 ] 授業でやった.しかし忘れた. その時教科書使ってない. センセのパワポだけ. SIに就職後だけど,情報系出てるのに恥ずかしい. いまさら何読めばいい? 英語は何とか問題ないと思うので英語の教科書でも. 次のレスでエロい人が読み物を列挙してくれる予定. ↓
721 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 07:01:00 ] つttp://wiredvision.jp/news/200710/2007102622.html
722 名前:デフォルトの名無しさん [2008/01/10(木) 09:13:40 ] チューリング完全なんて数学の知識が要るから必要ないよ
723 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 09:26:34 ] 知ってるに越したことはないけどね
724 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 09:27:46 ] 美少女中学生と完全なチューをしている状態!(*´Д`)'`ァ'`ァ
725 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 15:31:05 ] 数学の知識が無いのにそういう仕事してる時点で下流決定だろw
726 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 16:00:31 ] 時点で、とか書く時点で厨レスだろw
727 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:32:54 ] 2chやってる時点でry
728 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:44:36 ] >>726 厨リング完全なレスだな
729 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:36:30 ] >>728 誰がうまいことを(ry
730 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:09:56 ] まあしかし、すでにプログラムをかけるひとはチューリング完全のあたりを勉強するのはぜんぜん難しくないと思う 数学の記法つかってかいてない本とかあれば、だけど。
731 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:18:24 ] ありそうだな
732 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 01:22:11 ] あるよ?
733 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:26:47 ] include guard書くのが馬鹿らしいので#includeのプリプロセスで勝手に弾いてほしい。
734 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:55:47 ] #pragma once
735 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 10:03:19 ] pragma onceがなかなか標準にならないのは いろいろ難しい問題があるらしい。 知らんけど
736 名前:デフォルトの名無しさん [2008/01/17(木) 11:50:48 ] #pragma once って gcc でも vc でも使えるよね.
737 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:10:50 ] windowsのヘッダを通さなきゃならないコンパイラはみんなonceは通すよ
738 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:00:20 ] #pragma twice
739 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:55:22 ] >>735 一言で言えば、何で同一性を判定するのかという問題だね
740 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:19:03 ] インクルードガードを内部的に自動生成したのと同じ形に動作する程度でいいと思うんだがなあ。
741 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:33:07 ] その内部的に生成する際に、識別子をどうするかが問題なんでしょうが
742 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:29:02 ] GUIDを使って後は神に祈る
743 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 22:41:21 ] 内部的に自動生成したのと 「同じ形に動作する」 わけだからどうとでもなるべ。
744 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:02:53 ] 同じファイルに複数の名前がついてるような場合とかどうするのって話。
745 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:07:46 ] ローカルにあるファイルを、 直接と、ネットワーク越しにとでアクセスする場合とかか?
746 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:47:53 ] シンボリックリンクされてる場合とか。
747 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:02:15 ] 「そういう場合は処理系定義とする」 でもういいじゃん
748 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:16:03 ] いちいちヘッダを比較すればいい 違う名前だろうがなんだろうが一字一句同じなら同一としていいはずだからな
749 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:17:23 ] 同じファイル名が別の場所にあって名前も内容も同じ場合ってのがシステムヘッダ などでよく起きる。さらに内容はほぼ同じ(バージョン違い)とか考えだすときりがない。
750 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:20:26 ] それに関しては絶対パスで区別すりゃいい。 リンクされてる場合は、同一実体を指しているかもチェックする。 ただ、このあたりは環境依存な話が多く出てくるので もう 「処理系定義」 でいいと思う。
751 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:31:00 ] 提案書を書いて委員会へ提出よろ
752 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:31:06 ] そんならもう#pragma onceの扱いは処理系定義でいいじゃん。
753 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:31:46 ] そもそも pragma の扱いは処理系定義だw
754 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:53:37 ] #pragma onceってファイル内の中途半端な位置に書いてたり2か所に記述したりしたらどうなるんだろ
755 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:56:32 ] 処理系定義だろ
756 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:04:14 ] >>752 ワロタ
757 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:42:44 ] #pragma once #pragma once は同一ファイルの二度目以降のインクルードを無効にする。 ファイルの同一性判定の方法は処理系定義とする。 ファイル A の中で #pragma once が処理される前に #include があり、 その中でファイル A がインクルードされている場合、 #pragma once は効力を発揮しない。 #pragma once はファイル中に1カ所にしか出現してはいけない。
758 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:15:21 ] #pragma once(unique-id) ちょっとタイプ量は増えるけど、こう書くようにすればいいんじゃなかろうか。 従来のようにidを省略したら、 #pragma once(__FILE__) みたいになって、ファイルの同一性の比較は処理系定義と妄想
759 名前:デフォルトの名無しさん [2008/01/18(金) 09:19:30 ] >>748 じゃだめなん?
760 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:38:45 ] 全く同じファイルのコピーが二箇所にあって、両方ともincludeされてて、 なんかの拍子に片方を編集したら、コンパイルとおらなくなる。 鬱陶しくないか。
761 名前:デフォルトの名無しさん [2008/01/18(金) 09:41:35 ] >>758 がいいな 同一性はプログラマが定義することもできるし、コンパイラに任せることも出来る
762 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:10:44 ] 普通にインクルードガードでいいだろJK
763 名前:デフォルトの名無しさん [2008/01/18(金) 10:12:15 ] >>762 よく ifdef endif の対応関係がずれて あわわわ〜ってなる(笑
764 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:55:05 ] >>763 それは言語仕様でフォローすることではないな
765 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:13:46 ] >760 コンパイル通るようになったらなったで、 何からの拍子で、片方だけ、構造体の構成とか変更すると、 実行時に訳わかめなエラーになるんじゃねーの。
766 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 13:48:01 ] こういう仕様を考える時は「やっちゃいけないこと」から考えるといいぞ
767 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:34:02 ] include回りの問題の多くはModules in C++(N2316)が入れば解決じゃね? 仕様が固まる頃にはC++20くらいになってそうだけど。
768 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:45:37 ] もうプリプロセッサなくていいよ
769 名前:デフォルトの名無しさん [2008/01/18(金) 20:46:29 ] >>768 まぁそういう意見もあるよな. しかし過去の遺産のことを考えると プリプロセッサの挙動をもっと厳格に 規格化したうえで存続した方がいい.
770 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:46:38 ] Cでプリプリ!なんていやらしい!
771 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 21:01:08 ] modulesを入れるとなあ、 exportどころじゃないぞ、実装の手間が。 templateもconceptも、実装をヘッダでincludeすること前提だしな。 必要な情報を全部中間言語に書き出すとなると大変。
772 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:51:35 ] もはや C++ ではない気がするなあ
773 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:29:00 ] D言語においでー
774 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 08:41:03 ] DはC++0xの実験的な実装
775 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:12:01 ] include guardも#pragma onceも、インクルードされる側のファイルに書く。つまり、読まれたかどうかはファイルを開かないと分からない。 なんつーか、Obj-Cのimportみたいのが欲しいんだよね。あれって多分開く前に同一性チェックをしてるでしょ。(#pragma onceもそうなのかな?)
776 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:16:09 ] 美少女中学生のインクルードガードは固くないほうがいいなぁ もしくは自分で破っちゃったりしててアアーッ
777 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:27:39 ] つttp://pc11.2ch.net/test/read.cgi/tech/1142089873/
778 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:38:18 ] 16.6.1 #pragma once #pragma once po-identifier_opt new-line po-identifier: identifier or ( identifier ) #pragma once は同一ファイルの二度目以降のインクルードを無効にする。 identifier が指定されている場合は、identifier が同一である場合に同一ファイルであると判定する。 identifier が指定されていない場合のファイルの同一性判定の方法は処理系定義とする。 ファイル A の中で #pragma once が処理される前に #include があり、 その中でファイル A がインクルードされている場合、 #pragma once は効力を発揮しない。 identifier の指定の無い、または同じ identifier を持つ #pragma once は、 ファイル中に1カ所にしか出現してはならない。
779 名前:デフォルトの名無しさん [2008/01/21(月) 01:06:40 ] Cプログラマ必須テキストです! mori.eco.to/
780 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 07:06:50 ] 俺はC++だから必要ないな
781 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:15:59 ] おまえがC++だったのか!
782 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:20:59 ] >>780 お前のせいで!
783 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 15:40:53 ] >>782 お前がハゲなのは親のせいだ。
784 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 15:56:56 ] C++のせいではなかったのか…orz