C++0x 4at TECH
C++0x 4 - 暇つぶし2ch750:デフォルトの名無しさん
08/11/15 15:23:50
>>749
素直にTMP厨と呼べば?

751:デフォルトの名無しさん
08/11/15 15:26:01
C++はD言語の爪の垢でも煎じて飲めば良いのになぁ>コンパイル時文字列操作

752:デフォルトの名無しさん
08/11/15 15:48:44
今度はD厨か。

753:デフォルトの名無しさん
08/11/15 15:57:39
Dといえば以前はDelphiだったのにな・・・

754:デフォルトの名無しさん
08/11/15 18:48:31
D厨は関数のコンパイル時実行で無限再起でも起こしてコンパイラを落としていればいい。

755:デフォルトの名無しさん
08/11/15 19:41:29
コンパイルタイム無限再帰で悩むのはC++、
コンパイルタイム無限ループで悩むのがD。

756:デフォルトの名無しさん
08/11/15 19:54:33
そろそろ文字列mixinを導入して本格的にマクロを捨てようじゃないか

757:デフォルトの名無しさん
08/11/16 00:13:59
importディレクティブマダー?

758:デフォルトの名無しさん
08/11/19 18:34:26
mixinなんてD臭いキーワード嫌だ

759:デフォルトの名無しさん
08/11/19 20:36:27
late binding指向のmixinなんかC++に入るわけがない。

760:デフォルトの名無しさん
08/11/21 11:50:31
>>19

761:デフォルトの名無しさん
08/11/21 17:57:57
後置単項の+はC++の演算子じゃないから>>19は構文エラー

762:デフォルトの名無しさん
08/11/22 01:13:42
後置+++はC+++の演算子だよ。

763:デフォルトの名無しさん
08/11/22 22:15:49
C# は # という演算子を作るべきだった。

764:デフォルトの名無しさん
08/11/22 22:17:46
C や C++ にすらあるというのに

765:デフォルトの名無しさん
08/11/22 22:55:25
でもC/C++の#演算子は前置単項だからな

766:デフォルトの名無しさん
08/11/22 22:57:28
使ったことないな

767:デフォルトの名無しさん
08/11/22 23:01:27
ASSERT のようなマクロを使う時に
引数をエラーメッセージに表示する時とかによく使う。

768:デフォルトの名無しさん
08/11/22 23:02:28
使う時に、じゃなくて、作る時に、だ。

769:デフォルトの名無しさん
08/11/22 23:28:01
プリプロセッサ演算子だな

770:デフォルトの名無しさん
08/11/23 21:58:51
ぷろぷりせっさ

771:デフォルトの名無しさん
08/11/24 09:12:03
ぷるぷるそっさ と空目

772:デフォルトの名無しさん
08/11/24 19:19:49
スレッドとメモリモデルに関してはどこを探せばいいですか
C++0xで決まるのかどうかもわかってないレベルですが

773:デフォルトの名無しさん
08/11/24 19:20:31
>>772 >>1

774:デフォルトの名無しさん
08/11/24 21:24:43
C++0xのラムダ式は再帰できますか?

775:デフォルトの名無しさん
08/11/24 21:30:15
C++2003でも不動点演算子となるような関数オブジェクトが定義できるんで
こういうのを0xでも実装すればかのうだと思います

776:デフォルトの名無しさん
08/11/25 10:09:21
>>774
VC++blogに0xのラムダを使った再帰の例が出てたよ

777:デフォルトの名無しさん
08/11/30 11:56:57
                    /    ..::::::...ヾ,-┐:::::..  ヽ、
                   /::::::::    :::::::::::::::..ヽ|、::::::::...  ヽ、
                 / ::::::::     、:::::::::::::::::...ヽ::::::::::::..  ヽ
                 / :::::   人、 | ヽ、_:::::::::::::: |:::::::::::::.  |
            ,イ´   |  :::ト、 |  `'-,r‐=,、ヽ、 ::: |::::::::::::::  |
          rv' l´    ヽ、:.| r-、     p ヽ `l ,ヘ:::::::::::::::::   |
           | |  |     ヾヽ、 ハ     ヾ_ノ .| |' .|::::::::::::::::::  |      ラムダっちゃ♥
'´ ̄ ̄`ヽ、、_   | |  |       ヽ、l ゞ    ー   | レ':::::::::::::::::::  |
 ̄      ` r-L l  ',        |` 、       ,' |::::::::::::::::::::::  |
       _rヾニ `ヽ ',       ヽ、 r‐-ァ   /::|::::::::::::::::::::::::..  |
       ヾゝイ´ ,/  .',          ヽ、ゝ' _,.-;ノ:: |::::::::::::   ::::.. |
:..         ト ´ /....  'ヽ,、_     >r' /:: /:::::::::::::     :::  |
         〉  .|:::::::::::......    `ー-‐'´,-/ /::::: / `ヽ、:::        |
:....    .:::::::::::|   |:::::::::::::::::,、-r―'''´ ̄ ,.-‐'´:::. /   |:::::....   .  |
::::::::::::::::::::::::::::::::|   ',:::::::::::::∧ヾ V/―/:::::::::::  /     |:::::::::::.......:::.  |
::::::::::::::::::::::::::::::::|    ',:::::::::::ト kl /三/::::::::::  /      ,':::::::::::::::::::::::  |
::::::::::::::::::::::::::::::::|    ',:::::::::|ヾヾ|、 /:::::::::   ,イ      ,':::::::::::::::::::::::::  | |
::::::::::::::::::::::::::::::::|    ',/ヽ__ヾ、|::::::   ∧/      /::::::::::::::::::::::::::  |.|.|
::::::::::::::::::::::::::::::::',    !  /    ヾ:: ∠__/      /::::::::::::::::::::::::::  | ||

778:デフォルトの名無しさん
08/11/30 12:04:27
N2554: The Scoped Allocator Model (Rev 2)
ってあるけど、これ地味にいいね

組み込みでもSTLコンテナとか使いやすくなる予感

779:デフォルトの名無しさん
08/11/30 23:24:37
そもそも組み込みではSTL自体が提供されていないことも珍しくなく
STLPortがコンパイル通るのも夢のまた夢だったり

780:デフォルトの名無しさん
08/12/01 00:18:37
>>778
メモリアロケーション関係はいいのが多いね。
>>779
Embedded C++(笑)


781:デフォルトの名無しさん
08/12/01 18:32:39
組み込みって標準入出力ないんでしょ?
cin,coutとかどうするんだろ

782:デフォルトの名無しさん
08/12/01 18:38:57
そういうとこでは<iostream>などが無くても良いことになっている。
フリースタンディングとかでググれ。

783:デフォルトの名無しさん
08/12/01 21:19:00
>>781
そういうことは初心者スレで

784:デフォルトの名無しさん
08/12/07 01:44:06
C++のISO 標準仕様の文書を無料で手に入れたいんだけど、転がってるところ知らない?
JIS のHPにいったらPDFで閲覧できたんだが、こいつはスキャナかなんかで読み込んだのを
PDF化したものらしく、ろくに検索もできないんで、ほとんど使えない。

785:デフォルトの名無しさん
08/12/07 01:56:24
draft + 規格名 + filetype:pdfでググって。

786:デフォルトの名無しさん
08/12/07 02:09:00
>>784
ありゃひどいよな…。
検索できない電子文書とかただのバイト列だわ。

787:デフォルトの名無しさん
08/12/07 02:16:54
無料じゃ手に入らない。金を払え。

788:デフォルトの名無しさん
08/12/07 02:18:44
>>784
なんで ISO の規格が見たくて JIS に取りに行ってんだ?
ISO のやつなら >1 のページにあるドラフトと Issue リスト見ればおおかた情報は揃うし、
検索もできる。

789:デフォルトの名無しさん
08/12/07 04:29:07
だいたいJIS規格のアレをまともに読んでいる奴はこの世にいるのか?
訳した奴でさえ、多分意味分かってないんじゃないのかアレ。

790:デフォルトの名無しさん
08/12/07 06:26:03
何で売っているものを無料で手に入れようと思うんだ?

791:デフォルトの名無しさん
08/12/07 06:28:42
この御時世に規格書を売るってのが変だと思うんだが。
C++0xの規格もやっぱり有料なのかな。

792:デフォルトの名無しさん
08/12/07 08:06:29
>791
公的標準化機関の制定する規格書で無料のものの方が少ないんじゃね?
運営費も必要だし。全額寄付だと公平性に問題がって話になるし、全額税金だと
ある程度は受益者負担でって話が出てくると思う。

と思ったけど結構高いな、おい。
現行 C++ で JIS だと PDF がまだないけど、冊子で \17,325。PDF できても同額になると思われる。
ISO だと CHF 370,00 で 3万弱か?
ANSI だと $30.00 なのに。
一時期 $15 で売ってたはずでその時に買ったから高いという意識があんまりなかった。

793:デフォルトの名無しさん
08/12/07 11:28:46
JISの規格票の値段はページ数に比例します。
恨むならでかい規格作った方を恨んでください。

794:デフォルトの名無しさん
08/12/07 12:38:07
CHFてどこの国の通貨単位か当てっこしようぜ。
おれはチャイニーズフランだと思う。


795:デフォルトの名無しさん
08/12/07 12:58:53
>>794
Confoederatio Helvetia Franc
コンピュータ技術者ならお馴染みのフォント名が実はあの山国のラテン語名だったのね。

796:デフォルトの名無しさん
08/12/07 16:16:41
>>792
ISOってC#とかは無償公開してたよなぁと思って調べてみたら
C++は今のところTR1だけみたいね。

URLリンク(standards.iso.org)
URLリンク(standards.iso.org)(E).zip

雰囲気、C++0xもFreely Available Standardsに入るんじゃなかろうか。

797:デフォルトの名無しさん
08/12/07 16:21:06
すまん。TR1じゃなくてTechnical Report on C++ Performanceだった。


798:デフォルトの名無しさん
08/12/07 19:15:35
>>797
そいつはずっと前から >1 のリンク先でダウンロードできる。

799:デフォルトの名無しさん
08/12/07 22:13:11
C++0x の初期ドラフトは C++03 に近いからそれでいいんじゃね。

800:デフォルトの名無しさん
08/12/07 22:23:32
みんなちゃんと金だして買えよ。俺はISO版とANSI版とJIS版を買ったぞ。
そこまで揃えろとは言わんけど、せめて一つぐらい買ってやれよ。
こんなC++の新規格追いかけてるようなプログラマなんだから、みんないい給料貰ってんだろ?

801:デフォルトの名無しさん
08/12/07 22:45:17
そもそもその金は誰の懐に入るの?

802:デフォルトの名無しさん
08/12/07 23:43:29
>>800
ISOとANSI、二つ必要?

803:802
08/12/07 23:45:19
ちなみに俺はISOの奴、
INCITS+ISO+IEC+14882-2003.pdf
だけ持ってる。古いのもあるが、最新はこれだけ。

804:800
08/12/08 05:43:34
>>801
それぞれの規格をとりまとめてる機関の運営費になってるハズ。
>>802
内容的には同じだから要らない。
ISOのほうが先行して発売してたから買っちゃったけどISO版は一番高いくせに糞。
URLリンク(ml.tietew.jp)

805:デフォルトの名無しさん
08/12/10 06:50:05
g++ 4.4にautoの実装と新しい関数宣言の構文来てるね。
あまり使い方わかってないけど、適当に4.4の新機能を使ってみた。
#include <iostream>
#include <vector>

template <typename T> auto f(T x) -> decltype(x*x)
{
  return x*x;
}

int main ()
{
  std::vector<int> x{1, 2, 3, 4, 5, 6, 7, 8, 9};

  for (auto i = x.begin(); i != x.end(); ++i)
    std::cout << f(*i) << std::endl;
  return 0;
}

出力
1
4
9
16
25
36
49
64
81

806:デフォルトの名無しさん
08/12/10 07:47:42
やっぱりきもいな。

Dだと、
 typeof(T*T) f(T)(T x) { return x*x; }
 auto f(T)(T x) { return x*x; }
でいけるから、C++ももうちょっと頑張って欲しかったのに。

807:デフォルトの名無しさん
08/12/10 08:01:47
しばらく*iな理由を考え込んでしまった……

808:デフォルトの名無しさん
08/12/10 19:32:33
>>803
それANSIじゃないの?
ここで買えるやつだよね。

URLリンク(www.techstreet.com)

購入検討中

809:デフォルトの名無しさん
08/12/11 06:39:50
>>807
iがイテレータだからだよな
パッと見だと分からないね

810:デフォルトの名無しさん
08/12/11 08:31:16
んなわけねーべw > 考える、分からない

811:デフォルトの名無しさん
08/12/13 03:55:43
インクリメントされるint型がポインタで渡されてる(´・ω・`)???
って、一瞬なるよ。

812:デフォルトの名無しさん
08/12/13 08:09:01
iじゃなくてitにでもしておけばいいな。

813:デフォルトの名無しさん
08/12/13 08:29:41
>>811
ならねえよ。

concept map InputIterator<int> {
typedef int value type;
typedef int reference;
typedef int* pointer;
typedef int difference type;
int operator* (int x) { return x; }
};

でさえ全然普通。begin(), end(), *iでiterだなって分かる。

814:デフォルトの名無しさん
08/12/13 10:40:45
そんなのできないだろ
コンセプトマップ貼り付けられる組み込み型ってポインタだけでしょ?

815:デフォルトの名無しさん
08/12/13 11:25:20
>>805はイテレータの名前がiになってるから違和感あるんだな
あまりイテレータをiって名付けてるソースはないと思う
itとかiteとかiterとかならよく見るが

>>814
んなこたない。組み込み整数型も関数型もいけるはず。

816:デフォルトの名無しさん
08/12/13 11:36:51
そもそもループ変数がiなのはiteratorから来ているんじゃないの?

817:デフォルトの名無しさん
08/12/13 11:37:56
intだろ……、と思わずマジレス。

818:デフォルトの名無しさん
08/12/13 11:40:12
indexじゃなかったか?

819:デフォルトの名無しさん
08/12/13 11:40:52
intだろうとiteratorだろうとループ変数で使うならiだなぁ
スコープが狭くて使用頻度が高ければ1文字は基本ですよねー

820:デフォルトの名無しさん
08/12/13 12:30:30
オッサンがマジレスしちゃうぞー

821:デフォルトの名無しさん
08/12/13 14:04:54
数学の積分で使うiはindex?

どっちにしてもiとかjとかnという変数を見たら整数だと思うよ
FORTRANerじゃないけど

822:デフォルトの名無しさん
08/12/13 14:13:26
よくわからないけどintegralでは?

823:デフォルトの名無しさん
08/12/13 14:16:34
頻度が高いからこそ二文字変数にしてインクリメンタルサーチで引っ掛けやすくすると言うこともあるが。

824:デフォルトの名無しさん
08/12/13 14:55:42
>>816
iotaからきてるはず。
だからC++0xには
void iota(Iter first, Iter last, T value)
なんて関数が<numeric>に入るんでしょ。


825:デフォルトの名無しさん
08/12/13 15:03:31
C++スレ見てたから、なぜitoaが?
卵から鶏が・・・とか思ってしまったんだぜ

826:デフォルトの名無しさん
08/12/13 20:52:23
え、素直に、FORTRAN の最初の整数値変数のiから来てるんだと思っていたが
算術周りは後付でしょ

827:デフォルトの名無しさん
08/12/13 20:59:50
大本は数学で行列や数列の要素を書くのに下付き文字でa_ijとか書いてたのだろ
1800年代からの習慣だ

828:デフォルトの名無しさん
08/12/13 21:06:31
それはそんなに古くない習慣だと思うが

829:デフォルトの名無しさん
08/12/14 01:56:50
>>814
ConceptG++で動いているコードだよ。

830:デフォルトの名無しさん
08/12/17 01:27:12
ユーザー定義リテラルのサフィックスに使えるのって'_'+小文字で始まるものだけ、で合ってる?
_で始まらないのサフィックスは予約されてるし、identifierには違いないから
'_'+大文字や__でを含むのもダメなんだよね?

831:デフォルトの名無しさん
08/12/17 01:51:40
'_'+小文字の識別子はファイルスコープで予約されているのだが。

832:デフォルトの名無しさん
08/12/17 02:03:03
>>830
literal operatorかliteral operator templateとして定義されている識別子ならOK
URLリンク(www.open-std.org)

833:デフォルトの名無しさん
08/12/17 17:24:49
>>831
嘘はよくないな

834:デフォルトの名無しさん
08/12/24 18:00:24
コンセプトよくわかんないから質問していい?

concept B<typename T> {/*...*/}

concept D1<typename T> : B<T> {}
concept D2<typename T>{ requires B<T>; }

D1とD2って何が違うの?

835:デフォルトの名無しさん
08/12/24 19:18:36
refinementのばやい、concept_mapを定義すると、
refine関係のあるconceptでも、concept_mapが自動生成されます。


836:デフォルトの名無しさん
08/12/24 20:01:36
つまり、D1の場合は

concept_map D1<Foo>{/*...*/}

だけでconcept_map B<Foo>も自動で作られるけど
D2の場合はそうならない

で合ってる?
てことはauto conceptの場合は全く同じでいいのかな

837:デフォルトの名無しさん
08/12/24 21:45:15
そうです。auto(以下りやくのところは節立てして書いてあります。
implict conceptがどうしたこうしたと。
仕様書から読み取るのは結構大変なんで、
六人記名の紹介論文を熟読することをお勧めします。
とはいえ、酔っぱらってて、チャックしないで書いてるから間違ってたらゴメンネ。
上のは14.9.6だとあてずっぽうで書いときますw

838:デフォルトの名無しさん
08/12/25 03:18:02
URLリンク(d.hatena.ne.jp)
"JP-29. 例外クラスのUnicode対応" について。

現状の std::exception::what() に "Remarks" として以下の記述がある。
> The message may be a null-terminated multibyte string (17.5.3.2.4.3),
> suitable for conversion and display as a wstring (21.2, 22.2.1.4).
ちなみにこの記述は C++ 2003 でも今のドラフトでも変わってない。

Unicode とか関係無しに、ここの "may be" を "must be" にして、
"conversion" の具体的な方法を示してもらえばそれでいいような気がする。

たとえば mbstowcs() + std::wstring(wchar_t*) とか。それがあれば、
投げる側はその変換に合うように文字列を std::string に変換してやる
ことができる。

っていうか、そうしないと std::cerr << e.what() のようなごく自然なコードが
不正となってしまう。

839:デフォルトの名無しさん
08/12/25 08:55:41
今の記述で十分。
m17nしたければgettext()使えばいい。

840:デフォルトの名無しさん
08/12/25 11:34:01
>>839
たとえばファイルが開けなかったときの例外を表示するときには開こうとしたファイル名が
表示されてほしいんだけど、投げる側で what() にファイル名が入るようにしてたら
gettext() に支障が出るんじゃない?

841:デフォルトの名無しさん
08/12/25 20:28:14
>>838
この人らは何者なの?
最終ドラフトにこんなに要望したって通るわけないだろ
これ以上禿に日本の悪い印象与えるのやめて

842:デフォルトの名無しさん
08/12/25 21:31:50
誤字の訂正とか真面目な部分もあるけど、
std::string、char*をUTF-8前提にしろとか言った奴は頭悪すぎ。
>>840
そういうことをwhat()に押し付けないで。

843:デフォルトの名無しさん
08/12/25 21:51:16
>>841
機械振興会館でやってるから、情報規格調査会のWGに集まった人たち、って
ところだね。なんか変な香具師が混じったんだろ。

844:デフォルトの名無しさん
08/12/25 23:07:00
what 内で表示すればいいんじゃね。

845:デフォルトの名無しさん
08/12/25 23:51:41
>>841
C++0xに関する作業はもうISO/IEC JTC1のWGへ移ってる。
ここでは上がってきたドラフトに対して各国の代表 (national bodies) が
コメントを出し、それを受けて手直しして、最終版 (FCD) を作り上げる。
そしてそれを national bodies による投票に掛けて、通ればISO/IECの規格として成立する。

日本は情報処理学会というところがnational bodyとして出席していて、
>>838はそこの関係者。

846:デフォルトの名無しさん
08/12/26 00:02:35
そうか、正式な日本代表なのか

あんなのが日本代表の正式な意見書になるのか…

847:デフォルトの名無しさん
08/12/26 00:34:41
ここの5.4.7に名簿が
URLリンク(www.itscj.ipsj.or.jp)

848:デフォルトの名無しさん
08/12/26 00:37:52
最終版はちゃんとまとめられると思うよ。
国際規格に対するJISの貢献は結構大きいよ。
本家WGに参加する日本人はまだ少ないけれど。

849:デフォルトの名無しさん
08/12/26 00:39:22
>>842
「そういうこと」って何?
捜査対象ファイル名の表示を what() でやらないとして、ほかにどうするの?

850:デフォルトの名無しさん
08/12/26 00:45:44
C系の言語規格の立場としては、
そういうのはローカルプラットフォームの規約や
コーディング規約でやってねってことになっているんじゃない?
少なくともMBSについては。
// WCSだとwstringパスに対するfstream APIが増えたけれど。


851:デフォルトの名無しさん
08/12/26 00:56:44
>>850
完全にアプリ側だけで使うものならそれでもいいんだろうけど、
std::exception は標準の例外として bad_alloc やら ios::failure やら
stdexcept のやつらを同じ方法で扱うためのインターフェースとなるべきだろう。

そうでなければ、毎回 bad_alloc, ios::failure, ... の catch を分けて書け、とでも言うの?

852:デフォルトの名無しさん
08/12/26 01:05:51
>>842
無理だろjkって空気だったよ、あの場でもさすがに。結局、コメントには残ったみたいだけど。

853:デフォルトの名無しさん
08/12/26 01:17:17
wchar_t と Unicode がごっちゃになってる Windows オンリーな人なんだろうなと思う。

854:デフォルトの名無しさん
08/12/26 01:45:01
>>851
std::stringにマルチバイドキャラクターストリング入れて悪いわけじゃないから、
やりたい奴は勝手にやればいい。ただそれだけ。


855:デフォルトの名無しさん
08/12/26 01:56:50
>>854
だからさ、それじゃ「std::exception の what() を表示する」っていうコードが書けないじゃん。

今のドラフトじゃ
throw std::runtime_error("実行時エラー");
throw std::runtime_error(u8"実行時エラー");
の両方が黙ってコンパイルできてしまうし >838 にある "may be ..." にどちらも
違反しない。複数のライブラリを使ってたりすれば同じプログラム内で両方使われてる
可能性だって出てくる。 catch (std::exception const&) {...} 中でどうすりゃいいんだよ、
って話。

856:デフォルトの名無しさん
08/12/26 02:01:02
>>855
標準の枠内で書きたければそうすればいいし、
枠からはみ出る必要があればそうすればいい。

> だからさ、それじゃ「std::exception の what() を表示する」っていうコードが書けないじゃん。

問題ない。表示されるかどうかは、
取り出してからどう扱うかと環境によるってだけ。



857:デフォルトの名無しさん
08/12/26 02:07:43
>>856
> 標準の枠内で書きたければそうすればいいし、

「標準の枠内で書く」ということがどういうことか定まらないのが問題なんだろ。

> 問題ない。表示されるかどうかは、
> 取り出してからどう扱うかと環境によるってだけ。

「○○だと困る」って話をしてるのに「問題ない。○○ってだけ」とか、もうね。

858:デフォルトの名無しさん
08/12/26 02:10:43
定まってる。
charには何を入れてもいい。


859:デフォルトの名無しさん
08/12/26 02:17:20
>>858
「何を入れてもいい char の列を表示するコード」、ってバイナリダンプとか?

860:デフォルトの名無しさん
08/12/26 02:20:07
>>838
localeとfacetで出来るよ。


861:デフォルトの名無しさん
08/12/26 06:31:00
>>842
「真面目な部分」として「誤字の訂正」をあげるようなヤツに「頭悪すぎ」とか言われたくないなw

862:デフォルトの名無しさん
08/12/26 07:31:16
変なのが沸いてるな・・・

863:デフォルトの名無しさん
08/12/26 08:49:40
what()のメッセージに付記入れるなら__func__にも付記欲しいな
人が読めるようにとかオーバーロードやテンプレート実体化ごとに区別付くようにとか
縛りがないとどうせマングリング名になるだろ

864:デフォルトの名無しさん
08/12/26 17:09:44
和製の処理系とか見たこと無いんだけど。
JISにおけるC++規格って誰が使うの?

865:デフォルトの名無しさん
08/12/26 17:17:38
富士通が処理系出してたよ。
templateも結構まともだった。

866:デフォルトの名無しさん
08/12/26 17:33:23
日立もつくってますね。
boostもサポートされているようです。


867:デフォルトの名無しさん
08/12/26 17:45:13
ほぇ~、意外。
ぶっちゃけGCCからフロントエンドパクればいいだけじゃんとは思うんだけど。
なんか自作する理由があんだね。

868:デフォルトの名無しさん
08/12/26 17:55:49
大型やっているところなんでも揃えとかないといけないから。
あれがないって事になると顧客を失う。

869:デフォルトの名無しさん
08/12/27 00:40:53
スレリンク(tech板)
こっちで話題になってるんですが"default constructed"って何なんでしょう
詳しい人いませんか

870:デフォルトの名無しさん
08/12/27 00:46:57
default constructorによるconstructのことだろ。

871:デフォルトの名無しさん
08/12/27 01:01:42
クラスはそれでいいんですけど
"default constructed"された非クラス型が
value initializedされるのかdefault initializedされるのかが問題なんです

872:デフォルトの名無しさん
08/12/27 01:58:58
POD 型の場合、0 初期化されるの? されないの? って問題だな。

873:デフォルトの名無しさん
08/12/27 02:51:38
これってさぁ、基底クラスにObjectは採用してくれるの?

874:デフォルトの名無しさん
08/12/27 02:52:54
JavaのObjectクラスみたいな全クラスの暗黙の基底クラス?
するわけがない

875:デフォルトの名無しさん
08/12/27 08:59:56
>>864
あ、NECもSXシリーズのためにコンパイラ作ってましたね。
スパコンのベンダはだいたいC++のコンパイラを作っている、と。


876:デフォルトの名無しさん
08/12/27 10:16:00
>>873
void*でエエがな。リフレクションならtype_infoを継承してリフレクション情報
を混ぜたクラスをtypeidで返すように各ベンダがすればいいだけだし。
関数テーブルが標準で乗るような設計はC++の理念に反する。

877:デフォルトの名無しさん
08/12/27 14:53:09
>875
SXC++はtemplateが哀しいほど使えないぞ
complex<>も遅くて話にならないし

878:デフォルトの名無しさん
08/12/27 15:12:12
Objectが基底クラスじゃないからライブラリや設計が面倒くさいのに・・・
templateで無理やりぶん回すこともなくなるのに

879:デフォルトの名無しさん
08/12/27 15:26:31
>>878
あんまりプログラミング言語のこと知らないんだね。

880:デフォルトの名無しさん
08/12/27 15:43:41
>>878
キミObject型を何につかってんの?
現C++はSmalltalkやObjective-Cの様にObjectクラスが
存在しないとオブジェクト生成すらままならないという訳じゃないんだけど。

881:デフォルトの名無しさん
08/12/27 15:49:43
むしろC++はノイマン型アーキテクチャを直接叩ける言語にしては、
異常なくらいプリミティブ型へのサポートも厚い言語。
登場した時は恐れ入りました感があった。

今流行りの言語ではプリミティブ型コンテナの
ボクシング/アンボクシングが盛んだけど、
そのきっかけの一つになったと思っている。

C++は今のやり方を貫いて欲しい。

>>880
Objective-Cは、プリミティブ型のことは知りません、
Cで取り扱ってくださいって態度。

882:デフォルトの名無しさん
08/12/27 15:49:46
Smalltalk ならともかく、他の言語で単一継承モデルを採用している理由はなんなのかな
多重継承時のトラブル対策のみ?

883:デフォルトの名無しさん
08/12/27 15:59:16
interface/protocol があると多重継承はあんまり要らない気がする

884:デフォルトの名無しさん
08/12/27 16:01:19
>>881
SymbianやAndroidなど組み込み機器用のOOPとして現役だしね。
>>878みたいなことしても、客が逃げていくだけで何のメリットもない。

>>882
実装継承以外がinterface, trait, conceptになっただけで、
今は事実上多重継承ばかりかと。

885:デフォルトの名無しさん
08/12/27 16:10:08
てか、Objective-Cとか知ってる人間からすると、
実装無しで継承って(笑)と思ってしまう。
interfaceなんかはあくまで、型システムによって機能しなくなった
メッセージングを補完する為だけの苦肉の策で、本来の継承とはかけ離れたよに思う。


886:デフォルトの名無しさん
08/12/27 16:15:54
>>884
Mixinは実装多重継承との関わりがあると言っていいんじゃないの?

887:デフォルトの名無しさん
08/12/27 16:16:12
>>872
されない
struct foo {
 char bar[1000000]
}
が自動的に初期化されたらいやだろう
デフォルトコンストラクトは文字通り「何もしない」ので不定値が入る

888:デフォルトの名無しさん
08/12/27 17:05:41
Objective-Cとか知ってる人間(笑)

889:デフォルトの名無しさん
08/12/27 17:09:20
>>882
多重継承は仮想関数テーブルが複雑になって実装が面倒だからじゃね?

890:デフォルトの名無しさん
08/12/27 17:14:00
>>888
そうか?見識が広がっていいと思うぞ。
C++とは真逆の言語だからね。



891:デフォルトの名無しさん
08/12/27 17:38:32
>>889
invokeinterfaceやmixinでも同じだよ。

892:デフォルトの名無しさん
08/12/27 18:00:09
>>891
問題は仮想継承辺りの扱いかもね。

893:デフォルトの名無しさん
08/12/27 18:04:36
いい加減exportの扱いどうにかならんか?
0xなるんだから委員会も、もう少し強制するなりしろや。
コンパイル速度が遅くてかなわんぞ。

894:デフォルトの名無しさん
08/12/27 18:10:27
exportは実装に見合うだけの利益はないよ。
コンパイル時間が一割ぐらい早くなるかもしれんが、exportによって、
今までできなかったことができるようになるとか、そういうことは一切ないから。

895:875
08/12/27 18:35:24
>>877
実際に使ったことはないのですがw
情報ありがとうございます。
まあ、日立、富士通、NECといったスパコンベンダは
C++コンパイラを作っているのは事実、ということで。


896:デフォルトの名無しさん
08/12/27 18:58:54
>>887
引用スレに書かれている通り、foo() の書き方だと0初期化だよ。その互換性の話をしているんだと思う。

897:デフォルトの名無しさん
08/12/27 19:26:09
>>894
 そんなにみみっちいかなぁ。
 GCCのpragmaでやってるような、翻訳単位ごとにテンプレートのインスタンスが
発生するという事態は改善できるだろ。それから、ヘッダーの見通しもよくなるし、
STLの内部実相の為にベンダーが用意した__imp__comperなんて関数も取り込まなくて
済むようになる。(ファイルスコープが効く)
 まぁ、実装が一つしか無いから机上の空論ではあるけどね。

898:デフォルトの名無しさん
08/12/28 19:34:04
class Parent
{
public:
int Method(int);
};
class Child:Parent
{
public:
using Parent::Method;
};
って感じのprivate継承とか
static using
{
 struct
 {
  int a,b;
 };
 char c:
};
みたいな無名共同体。
int (Class::*member)=0;
の様なメンバー変数に対するポインタ(メンバー関数では無い)
なんて、使ってる人いる?むしろ使ったことある人いるか?

899:デフォルトの名無しさん
08/12/28 19:38:46
private継承は使うだろ普通に
無名共用体はC++ではあんまり使わないかもしれないけどCではよく使う

900:デフォルトの名無しさん
08/12/28 19:40:03
上に関しては、そんな書き方初めて見た。
それprivate扱いなの? 書き忘れ?

901:デフォルトの名無しさん
08/12/28 19:50:43
>>900
C++のclassはアクセス指定を省けば
基本private。structはその真逆。

902:デフォルトの名無しさん
08/12/28 19:58:21
なるほど、そのルールは継承にも適用されてたのね。。

903:デフォルトの名無しさん
08/12/28 20:22:20
メンバー変数に対するポインタは、
自作インタープリタ上のオブジェクトを
C++のクラスに結び付けるテンプレートを書いた時に使ったことがある。


904:デフォルトの名無しさん
08/12/28 23:43:57
メンバ変数に対するポインタは
リストの prev/next のどちらにも適用できる処理を書く際に使えたりする。

905:デフォルトの名無しさん
09/01/01 02:18:43
いよいよ09年なわけだが

906:デフォルトの名無しさん
09/01/01 03:41:14
今年中に纏まるとは思えないのだが。

907:デフォルトの名無しさん
09/01/01 03:59:11
日本限定なら09年度という便利な言葉が使えるんだが。

908:デフォルトの名無しさん
09/01/01 04:04:08
それでも猶予は4ヶ月しか増えないのだが

909:デフォルトの名無しさん
09/01/01 06:57:41
いや、そもそも0x年まであと27年もあるわけだが

910:デフォルトの名無しさん
09/01/01 07:08:47
C++0xa

911:デフォルトの名無しさん
09/01/01 09:10:41
(++0x)
だからあと2年猶予があるぞ

912:デフォルトの名無しさん
09/01/01 09:13:14
どうせ急いで制定してもC++プログラマの大多数は飛びつかないな・・・

913:デフォルトの名無しさん
09/01/01 10:13:30
とりあえずautoだけでも早く使えるように頼む

914:デフォルトの名無しさん
09/01/01 16:07:46
いやいやunique_ptrを

915:デフォルトの名無しさん
09/01/01 16:14:38
スレッドの概念が入るだけでありがたい

916: 【豚】 【282円】
09/01/01 23:19:47
variadic templatesが使えるようになるのはいつですか

917:デフォルトの名無しさん
09/01/01 23:25:07
2011

918:デフォルトの名無しさん
09/01/02 07:47:47
>916
gcc 4.3 以降を入れれば今すぐにでも。

919:デフォルトの名無しさん
09/01/04 03:38:53
const int n1 = 10;

constexpr int n2 = 10;
って何が違うの

920:デフォルトの名無しさん
09/01/04 03:42:53
右辺が整数定数なら差はないんじゃね

921:デフォルトの名無しさん
09/01/04 13:49:48
constexpr って導入する意味あるの?


922:デフォルトの名無しさん
09/01/04 13:58:07
constexprな関数の導入に意味がある。

923:デフォルトの名無しさん
09/01/04 14:25:05
constexpr constructor凄く便利。

ダラダラと逐次的な初期化コードや
それを含む初期関数を書く必要がなく、
データを宣言的に書ける。

924:デフォルトの名無しさん
09/01/04 21:38:33
>>923
kwsk... constexpr って(有る程度複雑な)計算結果が定数として扱えるように
なるとしかわかってないんですが、それがデータが宣言的にかけるとは
どういうことでしょう?

925:923
09/01/04 23:00:49
日本語訳もあるからググれ



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch