- 1 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:36:27.08 ID:jZESqUY+.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part122 peace.2ch.net/test/read.cgi/tech/1453557975/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1439849418/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
- 411 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:20:12.09 ID:ejdJRW9Z.net]
- >そんなに静的なチェックが重要と言うなら、オーバーロードもやめとけ。
これ意味不明だな オーバーロードは静的なのに
- 412 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:42:57.82 ID:+XU07v9B.net]
- >>411
オーバーロードに型チェックはあるが、 ユーザー定義変換のように、使用者側から見れば暗黙に見える変換が起きうるぞ。 なので確実なチェックが欲しいなら一つずつ名前を付けた方が良い。 どうだ馬鹿みたいだろう?
- 413 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:51:19.58 ID:noSrSdLM.net]
- >>412はstd::abs(double)やstd::fabs(float)が許せないタイプ
- 414 名前:デフォルトの名無しさん [2016/03/16(水) 21:53:11.55 ID:8e8fbPBE.net]
- そんなに動的なチェックが重要というなら、dynamic_castもやめとけ。
- 415 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:56:22.65 ID:9IPG0ZaQ.net]
- だからdynamic_cast版のコード書いてみろってば
じゃないと比較のしようがない
- 416 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 22:14:17.92 ID:Sre9WvB0.net]
- 男ならCスタイルキャストオンリー
- 417 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 08:31:39.81 ID:yET/+Bsj.net]
- >>412
> 変換が起きうるぞ。 意味わからん 具体例プリーズ
- 418 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 10:21:34.32 ID:mXayW7+h.net]
- >>417
あんま触るな コード出さない時点で誰かわかるだろ
- 419 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 12:44:04.09 ID:Mb/PAzMm.net]
- 仮に変換が起こったとしても、静的でしょ
dynamic_castとは別物
- 420 名前:デフォルトの名無しさん [2016/03/17(木) 21:19:25.81 ID:Nqbbnzs6.net]
- githubに置いてあるゲームをmakeするとコケた。
error: cannot convert 'bool' to 'boolean' for argument '2' to 'int jpeg_read_header(j_decompress_ptr, boolean)' jpeg_read_header(&cinfo, true); エラーをみて思ったんだが、bool 型と boolean 型の違いって何なんだろ?
- 421 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:27:52.26 ID:3douJvdz.net]
- >>417
void func( std::string ); func( "filename" ); ← 1 1.大丈夫だが、func( char* )ではないし、std::stringの構築が行われている のやつ言ってるんじゃない? ユーザ定義変換と書いてあるし
- 422 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:36:57.43 ID:1OZ8wjSn.net]
- boolをbooleanに変換するoperatorひとつ記述してやればよくね?
そんなに手間じゃないやろ
- 423 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 21:44:32.93 ID:K9pRNqs8.net]
- >>420
コードの該当箇所見た?
- 424 名前:デフォルトの名無しさん [2016/03/17(木) 22:09:31.51 ID:Nqbbnzs6.net]
- jpeglib.hでboolean型が定義されていた。
(boolean) tureでコンパイルは通る。 Cにはbool型は無いんだな。
- 425 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:12:09.48 ID:K9pRNqs8.net]
- ないねえ
- 426 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/17(木) 22:20:29.77 ID:ucqcC/SU.net]
- stdbool
- 427 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:38:53.07 ID:rjBvJtG9.net]
- あるっちゅーねん
- 428 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:40:27.06 ID:ucqcC/SU.net]
- あるっ中年
- 429 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 22:41:49.16 ID:ucqcC/SU.net]
- アル中中年
- 430 名前:デフォルトの名無しさん [2016/03/17(木) 22:42:41.64 ID:JPCzu/ni.net]
- C17で入れるか審議中。
- 431 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 23:12:37.74 ID:/lOxP0ET.net]
- >>421
でそれって > なので確実なチェックが欲しいなら一つずつ名前を付けた で解決できるんか?
- 432 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 23:19:50.72 ID:dAtTnfZR.net]
- 気付き易くした俺天才
ということだろう f_char(""); //OK f_string(""); //きっと誤り
- 433 名前:デフォルトの名無しさん [2016/03/18(金) 00:31:37.54 ID:bZVTun5z.net]
- >>424
C言語はスレ違いだがC99から_Boolという型がある stdbool.hをincludeしたらboolも定義される
- 434 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 05:07:52.40 ID:bw5Y7I/7.net]
- ゼロオーバーヘッドでないなら他の言語を使った方がいい
実行時効率以外に何の理由があってC++なんぞ使うのか
- 435 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 06:23:08.41 ID:bw5Y7I/7.net]
- 一見関係ありそうで全く無関係の書込を強めの口調ですることで、スレのおかしな流れを止めるライフハック
- 436 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/18(金) 06:47:57.93 ID:Ap+aghgX.net]
- それよりお前らClangのソースを読んでみろよ
この世のものとも思えない複雑怪奇 ビルド時間がReactOSよりも長いと来てる
- 437 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 13:00:52.70 ID:RPKOB45D.net]
- convertException(env, [=] () {
Wrapper<WrapperTest>(env, thisj).destroy(); }); ↑このコードの[=] () {〜}ってどういう意味?
- 438 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 13:08:35.67 ID:W5j8+q1I.net]
- ttp://en.cppreference.com/w/cpp/language/lambda
- 439 名前:デフォルトの名無しさん [2016/03/18(金) 13:57:19.97 ID:Kcr5mRax.net]
- [=]は俺も初めて見たときなんじゃそりゃーってなった
- 440 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 15:44:12.24 ID:InA5se8Z.net]
- >>437
「C++ ラムダ式」で検索するのが第一歩。 >>438 は正確なのだろうけど、英語というハードルの高低が人により…。
- 441 名前:デフォルトの名無しさん [2016/03/18(金) 16:01:29.94 ID:HFSK+zOK.net]
- [](){}();
!?
- 442 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 16:16:31.96 ID:410UcNdt.net]
- [=a,&b,&c,=d,&e]とか一々修飾しないといけないの?
- 443 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 16:29:45.63 ID:FVNcSrUO.net]
- 一律同じ条件じゃダメなときはね
- 444 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/18(金) 16:30:09.19 ID:Ap+aghgX.net]
- >>442
[=] [&] [this] を使え
- 445 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 19:11:24.91 ID:oTJE6YWd.net]
- 結局ラムダ式を使うべきところが分からないまま数年経つ
- 446 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 19:44:50.08 ID:UMQZP4zp.net]
- ( ・∀・)つ-[](){}();-
- 447 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 20:18:38.69 ID:vJhS3HXJ.net]
- ラムダ式はインラインになり得る?
- 448 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 21:20:10.79 ID:gDAbGK2s.net]
- map を使うとき,キーについて operator-() を定義する必要があるとのことですが,operator==() の定義は必要ないのでしょうか?
実際 operator==() を定義しないままで動いているようですが,気持ち悪いです. よろしくお願いいたします.
- 449 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 21:30:29.40 ID:FKb875f6.net]
- 記号でなんとかしようとするから複雑怪奇で意味不明になっていく
- 450 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 22:06:18.03 ID:vhFEV+GW.net]
- algorithmを使う時にはラムダを結構使うかな。
- 451 名前:デフォルトの名無しさん [2016/03/18(金) 22:08:14.37 ID:oKqsBnC/.net]
- ファンクタはもう出番ないんですか
- 452 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 22:19:30.53 ID:vhFEV+GW.net]
- >>448
そんな話はじめて聞いた。 operator<()か、mapのテンプレートパラメータで適切な比較関数を指定するか、のどちらかやっとけば問題ないはず。
- 453 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 22:20:00.80 ID:jzV+DAcw.net]
- ある程度長くなるなら、ラムダじゃないほうが良くない? そうでもない?
- 454 名前:デフォルトの名無しさん [2016/03/18(金) 23:38:29.84 ID:BXTY6QO1.net]
- 実行ファイルにバイナリファイルやテキストファイルなどを同梱したいのですが、どうやればいいのでしょうか?
- 455 名前:デフォルトの名無しさん mailto:sage [2016/03/18(金) 23:41:49.45 ID:fdaB6v5T.net]
- ソースファイルへ変換する。
- 456 名前:454 [2016/03/19(土) 01:01:05.43 ID:09FPc+yt.net]
- >>455
それだと起動した時のメモリ使用量がスゴイことになりませんか? jarみたいにできたらいいのですが…
- 457 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/19(土) 01:38:48.87 ID:qPghKix4.net]
- >>456
zlibを使う
- 458 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 02:01:48.98 ID:ojXVuQaH.net]
- どれぐらいのサイズのものを同梱したいんだろ。
メモリを気にするってことは PCなら数百MBを越え、でかいときには楽に1GB越えるサイズかな。 ひょっとしたらターゲットが組み込みマイコンで小メモリなのかな
- 459 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 04:25:33.28 ID:A8zNJX4o.net]
- >>454
リソースに追加
- 460 名前:デフォルトの名無しさん [2016/03/19(土) 05:34:50.36 ID:u4PbgbYy.net]
- 組み込みなら好きな場所にファイルを書き込めるんだから実行バイナリにくっつけるメリットが無い
- 461 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 06:22:04.15 ID:aVqCTfNk.net]
- >>460
> 組み込みなら好きな場所にファイルを書き込める 意味わからん 今時 Linux や Windows Embedded 使ってる組み込みなんていくらでもあるのに
- 462 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 07:17:32.18 ID:fKG0+8Dg.net]
- >>454
Windows + Visual Studio ならリソースに突っ込むのが一番簡単 でもゲーム開発とかなら別個にパックするファイルを用意した方がいい
- 463 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 09:27:46.68 ID:oD5CZDwR.net]
- >>452
なんで operator<() だけでいいのでしょうか?
- 464 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 09:32:44.77 ID:i3aw7Uuy.net]
- むしろless以外(同値判定など)がどうして必要なのか
- 465 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 09:59:57.29 ID:tKkEJPlU.net]
- mapは内部で要素に順序をつけて管理しているため、strict weak orderを満たすlessが必要
順序づけ(要はsort)の条件を指定するのに==では足りないだろう。
- 466 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 10:18:49.25 ID:i3aw7Uuy.net]
- しまったまた自演に反応してしまった
- 467 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 10:28:37.96 ID:/R8BseZf.net]
- >>463
operator<があれば同値判定も出来るからというのが本当の答え !(a<b) && !(b<a)ならa==b
- 468 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 10:42:20.95 ID:oD5CZDwR.net]
- >>467
ありがとうございます.
- 469 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 11:56:29.54 ID:i3aw7Uuy.net]
- >>467
どうしてそう息を吸ってはくような嘘をつくのか
- 470 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 12:07:33.31 ID:i3aw7Uuy.net]
- mapのキーの話か
勘違いした失礼>>467
- 471 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 12:33:51.72 ID:P4VbUWO2.net]
- 変数名はhogeとfooとunkoのどれがいいですか?
- 472 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 14:29:27.12 ID:SYQTFOu+.net]
- 昔はhogeは通用したけど、今時の若い衆にいきなり使うと、なんなのこの人と思われることがあるらしい
- 473 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 14:53:53.05 ID:g1UHnDq8.net]
- 昔から「hoge=コミュ障」というイメージです
- 474 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 15:06:03.88 ID:4a76PkUY.net]
- enumと文字列を同時に宣言するマクロを組んでいるのですが、
#define STR(head ,name) head ## name #define MAKE(...) \ typedef enum _ENUM{ \ STR(ENUM_,__VA_ARGS__ ),ENUM_Num \ } ENUM; \ const char *Name[ENUM_Num] ={ #__VA_ARGS__ }; というマクロで MAKE(one,two,three) とすると、本来はENUM_one ENUM_two ENUM_three というenumの要素が得られるはずなのに、 なぜか生成されるのはENUM_one two threeの三つになってしまいます。 Visual Studio 2015 CommunityのIntelisenceでのエラーなのですが、 これは本来は予期している結果が得られているのでしょうか? それともこいつが言うように実際は後者のような宣言になっているのでしょうか?
- 475 名前:デフォルトの名無しさん [2016/03/19(土) 15:37:01.96 ID:4a76PkUY.net]
- >>474です
すみません。ものすごい馬鹿な勘違いをしていました。__VA_ARGSは,も含めてそのまま放り込む ためのものなんですね。
- 476 名前:デフォルトの名無しさん [2016/03/19(土) 15:37:46.60 ID:4a76PkUY.net]
- すみませんが、>>474でやろうと思っていることを実装できるマクロは
どうやって組めばいいのでしょう?
- 477 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 15:54:23.67 ID:ni3uOtuZ.net]
- >>476
https://www.google.co.jp/search?q=boost+preprocessor BOOST_PP_SEQ_〜 を使えば MAKE((one)(two)(three)) でいけるはず。
- 478 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 15:57:26.06 ID:ni3uOtuZ.net]
- SEQ にしないといけないのは昔の話だった。
いまは MAKE(one,two,three) でもいけそう。 d.hatena.ne.jp/DigitalGhost/20111205/1323052916
- 479 名前:デフォルトの名無しさん [2016/03/19(土) 19:11:04.92 ID:4a76PkUY.net]
- >>476 ありがとうございます!
私はboostを全く知らなかったのですが、今入れてきました。 しかしいまいちよくわかったいないので、どうかboost/preprocessorを使った プログラムをご教授願えませんでしょうか?
- 480 名前:デフォルトの名無しさん [2016/03/19(土) 19:48:34.76 ID:4a76PkUY.net]
- 調べていってはいるものの、全く理解が追い付きません…
(a ,b , c)の引数に対して、 enum{ ENUM_a, ENUM_b, ENUM_c, ENUM_Num } が生成できれば締め切りに間に合うのです! どなたかお願いします!
- 481 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 20:06:06.20 ID:SYQTFOu+.net]
- あ、2ch新参の人だ!
2ch新参の人がいるぞ! 囲め!
- 482 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 20:13:11.30 ID:cIZsYOxL.net]
- どうしてもマクロじゃないと締め切りに間に合わない状況ってなんだろうね
- 483 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 20:59:41.54 ID:5djHDgqa.net]
- #, ##演算子
文字列化演算子・トークン連結演算子
- 484 名前:デフォルトの名無しさん [2016/03/19(土) 21:05:44.25 ID:4a76PkUY.net]
- >>483 __VA_ARGS__で受け取った場合、引数が(a,b,c)だと
enum{ ENUM_ ## __VA_ARGS__, ENUM_Num } としても enum{ ENUM_a,b,c, ENUM_Num } になっちゃいます
- 485 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 21:35:28.30 ID:IPOoQOnL.net]
- ずいぶんレベル下がったなこのスレ
- 486 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 21:51:12.72 ID:VQqTJbFl.net]
- 4引数まで版でconst charの中身の展開は省略
#define SELECT4(d1, d2, d3, d4, name, ...) name #define MAKE_ENUM(...) SELECT4(__VA_ARGS__, MAKE_ENUM_4, MAKE_ENUM_3, MAKE_ENUM_2, MAKE_ENUM_1)(__VA_ARGS__) #define MAKE_ENUM_1(key) ENUM_ ## key #define MAKE_ENUM_2(key, ...) ENUM_ ## key, MAKE_ENUM_1(__VA_ARGS__) #define MAKE_ENUM_3(key, ...) ENUM_ ## key, MAKE_ENUM_2(__VA_ARGS__) #define MAKE_ENUM_4(key, ...) ENUM_ ## key, MAKE_ENUM_3(__VA_ARGS__) #define MAKE(...) \ typedef enum _ENUM{ \ MAKE_ENUM(__VA_ARGS__), ENUM_Num \ } ENUM; \ //const char *Name[ENUM_Num] ={ #__VA_ARGS__ };
- 487 名前:デフォルトの名無しさん [2016/03/19(土) 22:03:39.89 ID:4a76PkUY.net]
- >>486 ありがとうございます
恐らく本格的なプリプロセッサを組まれる方は任意引数でやっているだろうなぁ とは思いますが、自分の力量にしたがいます。
- 488 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 01:20:47.66 ID:3h/wnv4V.net]
- なにバカ言ってるんだか
プリプロセッサでループや再帰(的処理)を行うには何らかの形で 作者が想定した処理できる限界の数だけのマクロをベタ書きで用意するしかない 事前の用意不要で任意の数をループや再帰で処理するのは元より不可能
- 489 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 01:24:49.08 ID:YNMOH2/p.net]
- なめくさりミステイクしてね?
- 490 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 02:24:48.46 ID:yN6fzEfa.net]
- 今時C++でマクロ展開のループとかしてる時点で論外だしな。
- 491 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 02:26:06.45 ID:yN6fzEfa.net]
- いやループはマクロだけじゃ無理か。再帰のしかも一定数までだな。
- 492 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 04:59:40.07 ID:wXobkPts.net]
- ハハワロス
- 493 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 09:05:43.61 ID:9j4drtjC.net]
- __VA_ARGS__なんて使わないで、こういう風にすればいいだけじゃ?
www.geocities.jp/rage2050a/rEnumStr/rEnumStr.html
- 494 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 09:29:08.28 ID:9j4drtjC.net]
- ちょっとだけ探した限りだと__VA_ARGS__使うやり方ではこのやり方が一番柔軟で良さそう
www.gamedev.net/page/resources/_/technical/apis-and-tools/maintenance-free-enum-to-string-in-pure-c-with-better-enums-r4230 数の制限はやっぱりベタ書きでなんとかしなくちゃいけないけどね
- 495 名前:デフォルトの名無しさん [2016/03/20(日) 14:17:44.97 ID:Q9e0J8ZE.net]
- BOOST_PP_AUTO_RECってのがある。
こいつは例えばあるマクロ関数「FUNC」があったとして、 再帰の回数分だけFUNC_1 FUNC_2…と作り出す機能がある。 あなたが求める機能は、もし再帰的に書けるなら MAKE_ENUM_ITER(key, ...) ENUM_ ## key, MAKE_ENUM_ITER(__VA_ARGS__) のように書けばいいわけだから、 後はわかるだろ?
- 496 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 14:19:27.99 ID:Q9e0J8ZE.net]
- sageてなかった
- 497 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 15:57:09.34 ID:NZgllOnE.net]
- 誰に向けたレスだ
> 再帰の回数分だけ をどうマクロで処理してるかわかってる? 設計としては再帰の回数を管理するカウンタ用のマクロを例えば COUNT_10,COUNT_9,...と必要な数だけベタ書きで用意して処理に使っているので あらかじめ用意されてるカウンタ用マクロの数を越える任意の回数の再帰を扱えるわけではない
- 498 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 16:04:24.63 ID:Q9e0J8ZE.net]
- 再帰処理させたいマクロをFUNCとして、
FUNCを何回再帰させるかを指定してBOOST_PP系統のマクロを定義すると、 FUNC_nという形になる名前の任意のマクロのうち、まだ定義されていない 名前のマクロを探し出して再帰的にFUNC_nを命名する機能を持っているのだ >>486のやっているベタ書きを自動的に書いてくれるのだ
- 499 名前:デフォルトの名無しさん [2016/03/20(日) 18:31:41.32 ID:EqMhetHD.net]
- >>498
boost/preprocessor/repetition/repeat.hpp の中身見たことある?
- 500 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 01:48:29.48 ID:ja7H/O1J.net]
- 百歩譲って
A=A+1 って式を認めよう この場合のイコールは代入を意味するんだな そこで質問です A+1=A って書いたらどーなるの? A=A-1 と同じ結果が得られるの? 教えてー
- 501 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 01:49:27.42 ID:90Oe+hOc.net]
- >>500
コンパイルエラーになるだけです
- 502 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 01:50:09.88 ID:ja7H/O1J.net]
- >>501
そっか・・・ あんまり論理的ではないのねorz
- 503 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 02:17:41.55 ID:d4s8z5nU.net]
- あーたの狭い脳内論理にフイットしないってだけで完全に論理的だから
- 504 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 02:24:07.46 ID:SoMbpeP6.net]
- マセマティカでも使えば幸せになれるかも
- 505 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 02:53:49.93 ID:YLhrJ5lt.net]
- >>501
おまいはエジソンかよw
- 506 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 03:41:34.03 ID:ti1fSBNM.net]
- だから = は等価(equal, equivalence)じゃなくて割り当て(assignment)だと何度言ったら
- 507 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 05:12:04.79 ID:YLhrJ5lt.net]
- あ、レス番間違えた
エジソンは>>500ね
- 508 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 05:55:27.03 ID:uWb5tpCC.net]
- 質問です。
(コンパイラ絡みの話題なので若干スレチかもしれませんが、このスレが一番詳しい人が多いと思いますのでご容赦ください) stringやlistなどはc++11でABIが変更になったと聞きますが、これの挙動がgccとclangで違うことを最近知りました。 たとえば以下のコードをビルド(g++ 5.2.0とclang++ 3.7.1)して nm --demangle コマンドでシンボルを見てみると、 $ cat hoge.h #include <list> using namespace std; struct hoge { list<int> get_list(list<int>); list<int> get_list(); }; $ cat hoge.cpp #include "hoge.h" list<int> hoge::get_list(list<int>) {return list<int>();} list<int> hoge::get_list() {return list<int>();} 引数のある関数get_list(list<int>)のシンボルはg++、clang++ともに hoge::set_list(std::__cxx11::list<int, std::allocator<int> >) ですが、引数のない関数get_list()のシンボルはg++だと hoge::get_list[abi:cxx11]() 、 clang++だと hoge::get_list() でした。 この違いのせいでg++でビルドしたライブラリをclang++のプロジェクトで使うことができません。 やむなく -D_GLIBCXX_USE_CXX11_ABI=0 オプションを付けてビルドし直したのですが これだとC++11でもたらされた効率化の恩恵が受けられないですよね? 何か上手い方法はないでしょうか?(clangが対応するのを待つしかない・・・?) # なお、ライブラリのほうをg++でなくclang++でビルドしろというのはなしでお願いします
- 509 名前:デフォルトの名無しさん [2016/03/23(水) 06:01:35.89 ID:LEkWD+7J.net]
- >>500
struct B { B& operator + (int) { return *this; } B& operator - (int) { return *this; } B& operator = (B&) = default; }; B A; A=A+1; A+1=A; A=A-1;
- 510 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 10:12:52.17 ID:COygSTBI.net]
- struct hoge{
std::string s; }; hogeのムーブコンストラクタはどう書くのが正しいですか
- 511 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 10:29:58.57 ID:YLhrJ5lt.net]
- >>509
すべてAになるとかエジソンコードかコレw
|

|