C++相談室 part111at TECH
C++相談室 part111 - 暇つぶし2ch650:デフォルトの名無しさん
14/03/20 22:11:39.96 t5turWoL.net
>>640
やろうとしてる理由説明した方がいいよ。

「そんな事やる必要なんか普通はないから、お前が間違えてる」
って言われてるんだし。

あ、おれも当然ねーよって思ってるし。

651:デフォルトの名無しさん
14/03/20 22:37:32.31 noBkfRX0.net
お前がC++を使おうとしている理由が解らない
馬鹿には敷居が高すぎる言語ってわからない?
さもわかったようなコードを書くんじゃねえよ
だからC++erはゴミなんだよ、いいからJavaでもやってろよ
ほんとくっせえな

652:デフォルトの名無しさん
14/03/20 22:40:50.39 VWEFswRv.net
どこが敷居高いんだよ

653:デフォルトの名無しさん
14/03/20 22:41:20.82 D+zU2rFS.net
叩き方がどうも古い。
10年以上前Javaが盛り上がっていたころのにおいがする。
ネタも演算子オーバロードとか多重継承とか、今さらそんなものをって感じだし。

654:デフォルトの名無しさん
14/03/20 22:44:04.04 KF1P5NVr.net
ここでは老害厨
URLリンク(hissi.org)

655:デフォルトの名無しさん
14/03/20 22:47:39.23 jQYIhnNX.net
ID導入されてよかったですねえ

656:デフォルトの名無しさん
14/03/20 22:51:22.81 yYFRoYiJ.net
>>646

こいつ大丈夫?
頭いかれてるんとちゃうん

657:デフォルトの名無しさん
14/03/20 23:08:17.90 ft4+yp6N.net
低脳は使ってはいけないC++なのに、低脳が当たり前のドカタがC++を使うのが日本なんだ
そんな奴が年取ると必死に老害拡散することになるよね

658:デフォルトの名無しさん
14/03/20 23:12:32.63 yYFRoYiJ.net
お前の方が老害だけど。お前、職場で嫌われてるだろ?

あ、それとも引き籠り?

659:デフォルトの名無しさん
14/03/20 23:39:47.49 NSVGWwHD.net
>>626
> DBはSQLite3をすすめる。

なんでそんなもん薦めるんだよ
今時 Express でもローカル DB のテーブルの作成とかデータの編集とかできるのに。

660:デフォルトの名無しさん
14/03/20 23:50:37.30 noBkfRX0.net
思考停止しかC++老害かもしれないレビューを真面目に受け取るのはやめていただきたい
スレの質問者がこういう悪い習慣を真似することになるから

661:デフォルトの名無しさん
14/03/21 00:15:42.28 Z82+z0lX.net
老害思考のC++マーは未だにK&Rを聖書扱いして読まない理解できない人間を軽蔑してくるから嫌われるんだよ
古臭いポインタ操作を絶対的な高等テクニックみたいに位置づけて初心者に洗脳を試みるから本当に気持ちわるいーい

662:デフォルトの名無しさん
14/03/21 00:31:21.70 vElMUroR.net
c++だよね…?

663:デフォルトの名無しさん
14/03/21 00:34:13.93 Q1MWJOU4.net
そして老害C++屋はhogeが大好きなのですよ

664:デフォルトの名無しさん
14/03/21 00:34:26.96 52hUyAFL.net
普通 ストロヴストルップ

665:デフォルトの名無しさん
14/03/21 00:37:05.63 pwhiTz9X.net
>>656
当たり前である
Java土方やVB厨ならともかく、C++を使おうって奴がK&Rを理解できないなんて問題外である
古臭いポインタ操作は高等テクニックではなくて基礎知識である

666:デフォルトの名無しさん
14/03/21 01:05:35.88 Z82+z0lX.net
C++オワコン言語を全世界で使用不可にすべき

667:デフォルトの名無しさん
14/03/21 03:22:19.20 RrNiHJYA.net
だからって while (*s++ = *t++) ; なんてコードを知る必要は無い

668:デフォルトの名無しさん
14/03/21 03:30:51.68 niIjRGJj.net
あー…nul終端コピーか。面白いな
有名なの?

669:デフォルトの名無しさん
14/03/21 03:37:16.86 obkTEIml.net
MSのサイトを見てもVisual Studio 20003 アップグレード版の
要件が書いてないのですが、Microsoft C Version5.0から
アップグレード出来るのでしょうか?

670:デフォルトの名無しさん
14/03/21 03:38:44.30 obkTEIml.net
>>664
すみません。板を間違えました。

671:デフォルトの名無しさん
14/03/21 04:47:18.20 fnSpmLK0.net
C++はSTLなきゃ皆C#に行くよ

672:デフォルトの名無しさん
14/03/21 05:01:25.19 niIjRGJj.net
STLのコンテナは名作

673:デフォルトの名無しさん
14/03/21 05:02:12.87 jmMl2GRd.net
コンテナはクソ。アルゴリズムはいい

674:デフォルトの名無しさん
14/03/21 07:00:45.11 8JNZIgzw.net
今時STL?
20世紀からタイムスリップでもしたのか

675:デフォルトの名無しさん
14/03/21 07:01:43.00 4ybypDDu.net
間もなくSTL議論が始まります
皆様は席についてお待ちください

676:デフォルトの名無しさん
14/03/21 07:33:51.69 52hUyAFL.net
car cdr ^ EQUIVALENCE 呼んだ~

677:デフォルトの名無しさん
14/03/21 08:18:32.43 hqXdKt0m.net
>>670
議論の余地はないだろ
STLなんて十数年前のライブラリを使う奴は
このスレに来るべきではない

678:デフォルトの名無しさん
14/03/21 09:30:44.74 xl4qUXQS.net
安心しろ
もう誰も乗ってこない
秋田

679:デフォルトの名無しさん
14/03/21 14:03:52.97 niIjRGJj.net
十数年前なんてしらねえよ
どんだけおっさんばっかなんだこのスレ

680:デフォルトの名無しさん
14/03/21 15:41:18.00 nQK3gNVS.net
古きを知って新しきを知る

681:デフォルトの名無しさん
14/03/21 16:11:45.76 aQAHkMot.net
>>656 あのバイブルが理解できないやつはC自体触るなよ

682:デフォルトの名無しさん
14/03/21 17:33:57.60 o/AML2E/.net
ヒント: スレタイ

683:デフォルトの名無しさん
14/03/21 17:41:48.80 Z82+z0lX.net
また馬鹿が墓穴を掘った

684:デフォルトの名無しさん
14/03/21 20:45:39.09 PuCTRIi5.net
C++11で最強DB親和言語になったって言うのに。老害だめだな

685:デフォルトの名無しさん
14/03/21 20:58:19.84 xl4qUXQS.net
>>679
いまいち乗り切れない。
煽り言葉が「老害」しかないんじゃちょっと・・・
才能が無いのでは?

686:デフォルトの名無しさん
14/03/21 21:22:43.93 PuCTRIi5.net
>>680
だめか,orz。C++14には簡単に釣ることのできるアホがいたが
ここはこの程度じゃスルーなんだな

687:デフォルトの名無しさん
14/03/21 21:25:46.17 Z82+z0lX.net
フィッシングスレになったか
次の餌はなんだろう

688:デフォルトの名無しさん
14/03/21 22:21:29.33 eDbXEgFM.net
まさかお前が老害荒らしだったとはな。
クソコード連投だけじゃ気がすまなかったのか。

689:デフォルトの名無しさん
14/03/22 01:23:38.33 wYAcoZCR.net
あ?
お前ら constexpr の仕様とか分かってないだろにわか

690:デフォルトの名無しさん
14/03/22 01:38:06.38 if6eO8D8.net
こんすとえくすぱー

691:デフォルトの名無しさん
14/03/22 01:43:30.57 +2B6OEdX.net
コンストラクターでしょ?
constexprをコンストラクターと勘違いしている>>684ってなんなんだ

692:デフォルトの名無しさん
14/03/23 18:02:22.61 6H5Lwf42.net
ヘッダのクラス定義にコード書くアホがいるんだけど
どう言えば波立たせずにやめさせられるかな

693:デフォルトの名無しさん
14/03/23 18:07:05.26 LwVxNWuC.net
warota

694:デフォルトの名無しさん
14/03/23 18:07:52.18 sd8rXCma.net
>>687
24時間程説得してみたら?

695:デフォルトの名無しさん
14/03/23 18:10:40.44 8g6oWFO6.net
>>687
お前さんはなぜ「ヘッダのクラス定義にコード書く」のがダメだと思うんだ?

696:デフォルトの名無しさん
14/03/23 18:12:14.55 XAzw8Srw.net
>>687
コード書くのをやめさせるのか、仕事をやめさせるのかどっちだ

697:デフォルトの名無しさん
14/03/23 18:42:30.33 Cwtmew+7.net
>>687
お前テンプレート書いたことないのか

698:デフォルトの名無しさん
14/03/23 18:48:15.26 qQgnZ21H.net
テンプレートだけでは実体は吐かないからねえ

699:デフォルトの名無しさん
14/03/23 19:04:28.63 D3tGTS8V.net
>>687
メリットデメリットを話せば普通の人間なら聞くんじゃね

700:デフォルトの名無しさん
14/03/23 19:05:03.68 OeBkoBxT.net
>>687
酷いことをしているやつ居るんだな。
ドカタの俺の仕事奪うなって言え

701:デフォルトの名無しさん
14/03/23 19:28:43.47 0loqh5rV.net
>>687
これマジ?!ヘッダに比べてソースの実装が貧弱すぎるだろ…

702:デフォルトの名無しさん
14/03/23 19:42:27.77 9EUDVluQ.net
Javaとかやってると何の疑問もなくそうするだろう
コンパイルに30分以上かかるようになったら反省させればいいんじゃね

703:デフォルトの名無しさん
14/03/23 20:05:08.00 8g6oWFO6.net
>>696
ごめん。意味がよく解んないんだけど・・・

704:デフォルトの名無しさん
14/03/23 20:07:18.08 FjLlR1KU.net
>>698
>>696は透視能力者

705:デフォルトの名無しさん
14/03/23 20:38:15.08 0loqh5rV.net
>>698
ありがとナス!

706:デフォルトの名無しさん
14/03/23 20:42:01.99 fNTjIHQL.net
>>687
getter/setterとか簡易なコードならヘッダに書いちゃうがそうじゃないんだろうな…
JavaやC#の文化なのかね

707:デフォルトの名無しさん
14/03/24 01:28:29.19 iN+OyuMJ.net
ゴミはC++をいじるな
ゴミはC++をいじるな
ゴミはC++をいじるな
ゴミはC++をいじるな
ゴミはC++をいじるな
ゴミはC++をいじるな
ゴミはC++をいじるな

708:デフォルトの名無しさん
14/03/24 01:31:53.97 EimEIz1g.net
>>702
自分縛りをこんな所で宣言されても。。。。

709:デフォルトの名無しさん
14/03/24 01:32:53.21 iN+OyuMJ.net
スーパーゴミスレ

710:デフォルトの名無しさん
14/03/24 01:33:05.31 fM/serR6.net
■ヘッダーに実装
・テンプレート
 ヘッダーに書かなくてもコンパイルが通るコンパイラ(sunの奴とかicc)もあるがg++とか通らないのもある、規格からしてもヘッダーに実装するのが正解
・inline関数
 ヘッダーに書くと確実にinline展開されるが、CPPファイルに書いた場合、何らかのコンパイルオプションをつけないとinline展開されないコンパイラが割りと多いので注意

■ヘッダーに実装する時もある(好みの問題)
・スーパークラス
 直接このクラスのメソッドを呼んでも意味がないことを明示するために、呼ばれてもエラーコードだけを返す実装にする場合

711:デフォルトの名無しさん
14/03/24 01:33:59.07 iN+OyuMJ.net
ゴミがC++をいじる資格はない
そのためにJavaがある

712:デフォルトの名無しさん
14/03/24 01:36:58.14 iN+OyuMJ.net
落ちこぼれはJavaに移行せよ
繰り返すJavaに移行せよ

713:デフォルトの名無しさん
14/03/24 03:10:13.09 ffEU9HT/.net
>>705
CPPファイルに書いた場合、普通はリンクするまで定義不明なんだから、
リンカでしかインライン展開出来ないし多いとか言うレベルじゃない気が

714:デフォルトの名無しさん
14/03/24 07:08:31.73 IjL2tu0m.net
cppに書くときってinline修飾つけても展開されないの?

715:デフォルトの名無しさん
14/03/24 07:25:59.50 d0K1Urj7.net
つーかむしろinline修飾ってヘッダーに実装書ける方の性質として見た方が便利だよね

716:デフォルトの名無しさん
14/03/24 08:14:45.51 YntusNZD.net
>>705
> ヘッダーに書くと確実にinline展開される
んなこたーない

> CPPファイルに書いた場合、何らかのコンパイルオプションをつけないとinline展開されない
ヘッダの宣言がinlineで使用時されてるコンパイル単位で定義が見えてなければエラー出るだろ。

717:デフォルトの名無しさん
14/03/24 08:20:55.26 AA6gYOlg.net
>>709
展開されるよ。
ファイル内でのみ使う関数でinlineとか、普通にやってる。

718:デフォルトの名無しさん
14/03/24 08:59:48.28 YCWGTqy5.net
ヘッダに直接コード書く場合は static や inline なりの接頭語つけないと
同じ関数の参照が大量に衝突起こすから付けているんじゃないのか
インライン展開するかどうかはほとんどコンパイラ任せだし

719:デフォルトの名無しさん
14/03/24 09:53:32.72 PXyEeIK6.net
ヘッダにstaticって意味あんのか

720:デフォルトの名無しさん
14/03/24 10:09:41.33 vUAKSIkw.net
意味無くはないよ。
コンパイル単位ごとに複製されるから無駄だけど。

721:デフォルトの名無しさん
14/03/24 11:03:05.01 ILjQ+S4K.net
ヘッダとかCPPとかコンパイラが意識するわけないだろって
通りすがりのプリプロセッサさんがゆってた

722:デフォルトの名無しさん
14/03/24 18:11:04.33 ffEU9HT/.net
コンパイル単位跨いだインライン展開だのテンプレート展開だの、リンカさんに色々要求しすぎです!

723:デフォルトの名無しさん
14/03/24 18:34:18.58 oYZZ1Y9Y.net
今仕事で触ってるプログラム、
ヘッダにstaticで関数プロトタイプ書いてて同じ名前、内容の関数が2つずつある

724:デフォルトの名無しさん
14/03/24 18:58:26.72 iN+OyuMJ.net
ゴミのC++コードは凶悪、メモリを破壊する

725:デフォルトの名無しさん
14/03/24 19:04:21.04 taZC4c0i.net
>>719
よぉ、NPC。

726:デフォルトの名無しさん
14/03/24 19:19:51.85 V15Zybb1.net
Javaでmainに全部実装する馬鹿ってまだいるの?

727:デフォルトの名無しさん
14/03/24 19:28:02.43 YMMJFWN3.net
Cでmainに全部実装する馬鹿がいるのと同程度にはいるだろう

728:デフォルトの名無しさん
14/03/24 21:30:45.57 XLLgQhJ0.net
GNUって割とmain関数が重いから馬鹿だと思うわ

729:デフォルトの名無しさん
14/03/24 21:38:34.06 bapb0GnL.net
mainをmain_と改名すれば満足か?

730:デフォルトの名無しさん
14/03/24 21:39:04.68 iN+OyuMJ.net
>>723
って馬鹿だと思う、C++を知らないなら黙っていればいいのに
馬鹿は馬鹿をさらけ出す、ほんと出てるわ

731:デフォルトの名無しさん
14/03/24 22:15:47.96 wiSeG6GG.net
gccではinlineは仮に呼び出し元と同じファイルに記述しても展開されない。アセンブラ出せばすぐわかるっす
なぜかは知らん

732:デフォルトの名無しさん
14/03/24 22:19:05.08 PXyEeIK6.net
あくまで目印だからな

733:デフォルトの名無しさん
14/03/24 22:41:21.57 iN+OyuMJ.net
アセンブラ語りだす馬鹿発見
このスレのレベル低すぎて何も言えねえ

734:デフォルトの名無しさん
14/03/24 22:52:38.14 ZHUWxekH.net
>>728
勉強しろよ

735:デフォルトの名無しさん
14/03/24 23:10:28.74 iN+OyuMJ.net
ゴミは黙れ

736:デフォルトの名無しさん
14/03/24 23:18:20.46 wiSeG6GG.net
ググるとinlineはヘッダーに実装すると意図したように展開しくれるとの個人意見
URLリンク(www7b.biglobe.ne.jp)

ゴミでしたが勉強になりました!

737:デフォルトの名無しさん
14/03/24 23:22:40.62 iN+OyuMJ.net
結局ム板じゃなくていいじゃん
ほんと頭おかしいよお前
プログラミングなんか向いてない

738:デフォルトの名無しさん
14/03/24 23:29:36.02 BuXlcEMY.net
でも機械語わからないやつはとんでもコード組んだりするよな

739:デフォルトの名無しさん
14/03/24 23:59:39.67 fM/serR6.net
>>711
> > ヘッダーに書くと確実にinline展開される
> んなこたーない

この場合に展開されないコンパイラってなに?

740:デフォルトの名無しさん
14/03/25 00:14:12.52 VoemgV7u.net
世の中の全てのコンパイラー

741:デフォルトの名無しさん
14/03/25 00:24:11.33 6DffvK7o.net
>>711
> ヘッダの宣言がinlineで使用時されてるコンパイル単位で定義が見えてなければエラー出るだろ。

コンパイルエラーの話はしていない
コンパイルできた時inline展開されているかされないかの話をしている
パフォーマンスを考えてinlineにするのに、展開されたり展開されないのでは困る
cppにinlineを実装する人は解って書いているわけじゃないんだろうなぁって思う

あとコンパイルオプション云々は撤回
インテルコンパイラで最適化オプション-O3でcppに書くとやっぱり展開されたりされなかったり…

742:デフォルトの名無しさん
14/03/25 00:25:16.35 bvFcvrs8.net
お前らのゴミコードはいらない
出ていけチョン国人

743:デフォルトの名無しさん
14/03/25 00:30:13.11 6DffvK7o.net
>>735
ハイハイワロスワロス

744:デフォルトの名無しさん
14/03/25 00:32:14.05 Eqzo8TtZ.net
cppにinline実装はしないがinline関数を書くときはあるな

745:デフォルトの名無しさん
14/03/25 00:33:20.72 bvFcvrs8.net
>>739
だからお前のその欺瞞に満ちたレスがスレをゴミするんだろうが

746:デフォルトの名無しさん
14/03/25 00:36:16.15 ZBltnWyU.net
>>740
日本人のふりしなくていいんですよ?

747:デフォルトの名無しさん
14/03/25 00:48:23.02 bvFcvrs8.net
>>741
あ、お前チョン人か
ならお前の成すべきことは一つ、チョーセンウンコハントーに か え れ !

748:デフォルトの名無しさん
14/03/25 00:49:57.06 +8Thsnpr.net
スルー検定開始

749:デフォルトの名無しさん
14/03/25 00:52:27.26 rAz4buIA.net
inlineはhoge同様に発狂キーワードだから禁止!

750:デフォルトの名無しさん
14/03/25 00:52:57.24 6DffvK7o.net
>>687もそうだけど完全に理解していない人が実装にこだわり出すと
意味あってヘッダーに書いているコードをわざわざcppの方に移してくれたり
Cでも隠蔽するつもりで構造体をCファイルに宣言してるのにわざわざヘッダーに移してくれたり
それでろくなことが起こらない…

皆さん動いたからと安心しないで、もっとちゃんと勉強しましょう

751:デフォルトの名無しさん
14/03/25 00:53:23.09 bvFcvrs8.net
>>743
おめでとうございます
スルー検定2級不合格です!

752:デフォルトの名無しさん
14/03/25 01:03:50.65 sCC7tw25.net
>>736
何が何でもインライン展開したいなら__forceinlineや__attribute__((always_inline))をつければいい
よっぽどシビアでない限り実際に展開するかはコンパイラに判断を仰ぐべきだが

753:デフォルトの名無しさん
14/03/25 01:04:00.38 PVErYtjz.net
>>734
コンパイラがなにっていうか、関数がでかすぎるとかコンパイラ実装にとって何かしら都合が悪けりゃ
展開しないだろうし、インライン展開を抑止するコンパイルオプションだってあるだろうし。

754:デフォルトの名無しさん
14/03/25 01:05:27.18 6DffvK7o.net
>>747
うちはヘッダーに書くんでいいです

755:デフォルトの名無しさん
14/03/25 01:06:44.12 PVErYtjz.net
>>736

756:デフォルトの名無しさん
14/03/25 01:07:26.99 bvFcvrs8.net
だからお前みたいなクズがC++を語っていいスレじゃねえんだよ
ゴミはゴミなりに本を読んでシコシコしてろよゴミC++マー

757:デフォルトの名無しさん
14/03/25 01:22:51.90 0aw1H2YW.net
>>736
再帰使われたら展開しようがないし、再帰は再帰でも末尾再帰なら展開されるかもしれないし、展開したらめちゃでかくなるので展開やめるかもしれないし
必ず展開してほしいなら inline assembler 使ってろよ。

758:デフォルトの名無しさん
14/03/25 01:25:09.34 bvFcvrs8.net
>>752
は再帰のできない出来そこないのエセプログラマー
質問者に嘘を教える最低の人間

759:デフォルトの名無しさん
14/03/25 01:26:18.57 Hi7fuqGU.net
>末尾再帰

末尾についてkwsk!

760:デフォルトの名無しさん
14/03/25 01:30:30.16 bvFcvrs8.net
また馬鹿が墓穴を掘った

761:デフォルトの名無しさん
14/03/25 02:39:19.20 /N09nw1b.net
>>752
jmpでまとめられる可能性は消えないけど、そこはdefineマクロでいいんじゃね?
>>754
末尾再帰がループに最適化される状況の場合、
ループ化されたコードがインライン展開される可能性を言ってるんじゃない?

762:デフォルトの名無しさん
14/03/25 03:03:21.00 6DffvK7o.net
inlineをcppに書くとか言ってるバカを産んだクズ母親は産む前におろすかどうかよく考えてほしかった

763:デフォルトの名無しさん
14/03/25 07:17:51.54 fi2ZaDIT.net
>>757
おっと勇み足

764:デフォルトの名無しさん
14/03/25 07:18:57.09 Xzsx0aVO.net
リンカさえ頑張ってくれれば別の言語でかかれててもインラインに出来るし

765:デフォルトの名無しさん
14/03/25 07:41:34.25 RtgkM+Fr.net
>>756
今時 define なんか奨めるなよ...

766:デフォルトの名無しさん
14/03/25 08:03:36.81 +8Thsnpr.net
リンカは関係ないんでね?
a.hに関数宣言、a.cppにinline関数を記述、a.hをインクルードしたb.cppからその関数をコールしている場合って
b.cppコンパイルしている時はa.hの宣言しか見えてないから、inline展開する可能性すらないと思うんだよね
とっても高級なコンパイラーさんだとちゃんとやるのもあるのかもしれないけど

767:デフォルトの名無しさん
14/03/25 09:27:39.61 cGvrEDGu.net
>>761
今時のリンカはリンク時にインライン展開やVTABLEの解決を行うよ。

768:デフォルトの名無しさん
14/03/25 10:59:44.80 1OTJ8TFG.net
検察が有罪にする自信があるなら、とっくに釈放してた。
ゆうちゃんの反撃の機会を出来るだけ奪っておかないと勝てそうも無いと考えている。
もう検察は詰んだ。

769:デフォルトの名無しさん
14/03/25 11:02:33.80 1OTJ8TFG.net
誤爆です、すみません

770:デフォルトの名無しさん
14/03/25 11:48:24.33 JLDIFaf/.net
いやそこはコンピュータをのっとられて勝手に書き込んでしまいました
というべき

771:デフォルトの名無しさん
14/03/25 12:02:56.21 sCC7tw25.net
C++は使えるがC#は使えません

772:デフォルトの名無しさん
14/03/25 12:46:48.73 trPB7Xb2.net
私はVBしか使えません 塀えもん

773:デフォルトの名無しさん
14/03/25 12:49:22.64 bvFcvrs8.net
ゴミはC++を使えない

774:デフォルトの名無しさん
14/03/25 13:12:17.25 PVErYtjz.net
>>736,761
(>750 で書き込んだつもりになってて書けてなかった)
7.1.2 [dcl.fct.spec] p4
"An inline function shall be defined in every translation unit in which it is odr-used ..."
っていうことになってるんだよ。これに従えば「コンパイルできたとき~」とか「リンカが~」とかそもそも
考える余地が無い。

・・・どういうわけか gcc も clang も警告が出るだけでエラーにはしないみたいだけど。
なんか読み違えてるのかな?

775:デフォルトの名無しさん
14/03/25 13:41:06.02 cGvrEDGu.net
>>769
規格上はそこに書いてある通りで「インライン関数は、それが使われるすべての翻訳単位で、
かつ一字一句同じに定義されなければならない」ので、インライン関数の定義を.cppに書くなら
その関数を使う.cpp全部に書かないと、厳密に言えば規格違反。

もっとも現実問題としては、非インライン関数として扱えばコンパイルはできるし、リンク時に
インライン展開することも出来るから、大した問題じゃないよね。

776:デフォルトの名無しさん
14/03/25 17:57:02.60 C5vqFeWi.net
shallなんて所詮努力目標

777:デフォルトの名無しさん
14/03/25 18:20:39.65 1coUayuU.net
むしろshallは死語

778:デフォルトの名無しさん
14/03/25 19:19:27.69 mtUgnBBf.net
>>769
shallなのか
shallでも警告で済ませるって低脳C++erが多すぎてエラーにはできないんだろう

>>770
低脳C++erは非インライン関数になっても動けば良いんだで終わりだろうし

779:デフォルトの名無しさん
14/03/25 19:35:38.81 3xpnko1c.net
>>772
代わりはなに?

780:デフォルトの名無しさん
14/03/25 20:53:26.52 JLDIFaf/.net
shnone

781:デフォルトの名無しさん
14/03/26 02:28:32.59 VUuUSoQL.net
まとめると、inline はヘッダに書けよ、糞共!ですね

782:デフォルトの名無しさん
14/03/26 02:38:05.96 +MovJmZj.net
コンパイル単位に閉じた些細なマクロ程度は
static inlineで代用することをお許しください

783:デフォルトの名無しさん
14/03/26 03:38:14.96 QrlG1cP3.net
>>777
それstaticもinlineもつける必要ないだろ。

784:デフォルトの名無しさん
14/03/26 07:00:24.10 BPRBwKR1.net
よっぽどマクロ好きなんだな

785:デフォルトの名無しさん
14/03/26 07:34:26.47 40e4BIeF.net
>>778=バカ
シンボルが他の翻訳単位に漏れても気にしないらしい

786:デフォルトの名無しさん
14/03/26 07:36:46.19 QrlG1cP3.net
>>780
いや、ファイルローカルな名前なら無名名前空間に入れるよ。

787:デフォルトの名無しさん
14/03/26 07:41:04.76 5Z0iw9O8.net
>>780
その方法は、次のC++(本来はC++11)から非推奨です

788:デフォルトの名無しさん
14/03/26 08:38:01.10 K+udxXcM.net
無名名前空間とinline良く使う

789:デフォルトの名無しさん
14/03/26 08:52:55.41 4JZv+4Js.net
どう翻訳されるかどう翻訳されたかわからない人はインラインはただ関数の頭に書いているだけになるのね

790:デフォルトの名無しさん
14/03/26 21:30:01.10 5AgnDT0q.net
>>747
それをつけたとしても必ずinline化されるわけではない

791:デフォルトの名無しさん
14/03/27 02:13:45.44 s0Hyzeif.net
>>785
define最強やな!
機械語になった時に括り出されてjmp先な関数モドキになる可能性は消えないけど、
少なくともプリプロセッサ抜けた段階ではインライン展開されているのがほぼ確実や!

792:デフォルトの名無しさん
14/03/27 10:09:23.86 yKWg+dVB.net
そもそもinlineの議論をしている筈なのに、
関数の実体を作りつつも別途inline展開できる可能性に触れていない辺りお郷が知れている。

793:デフォルトの名無しさん
14/03/27 12:09:04.74 oKJ8dIwZ.net
>>787
> 関数の実体を作りつつも別途inline展開できる可能性

最近知ったのか?
その方向の話になってないから、誰も触れてないだけかと。

794:デフォルトの名無しさん
14/03/27 13:48:00.57 qd9OiQZO.net
リンク時のインライン展開に触れてる人もたくさんいるけども

795:デフォルトの名無しさん
14/03/27 16:08:31.30 4HvGfxKh.net
vc2013はリンクの最中にclが走ることがあるな
コンパイラのエラーが出て驚いた

796:デフォルトの名無しさん
14/03/27 18:22:03.52 rDeXrVt7.net
ヘッダにコード書かなければなんでもいいよ

797:デフォルトの名無しさん
14/03/27 18:46:22.36 iV1oOl59.net
>>791
なんか問題あるの?

798:デフォルトの名無しさん
14/03/27 21:19:57.03 XUtydu4b.net
>>789
それがなにか?

799:デフォルトの名無しさん
14/03/27 22:50:57.72 HnupLlaF.net
>>791
もしやテンプレート知らない人?

800:デフォルトの名無しさん
14/03/27 23:23:03.72 wMybxixl.net
またそこに戻るんかいw

801:デフォルトの名無しさん
14/03/27 23:26:18.42 wG7r5lAh.net
ヘッダに書いた関数テンプレート、
ずっとinline付けずにいた。
素で忘れてたぜ。
・・・放っとこう

802:デフォルトの名無しさん
14/03/27 23:54:36.72 qd9OiQZO.net
ヘッダに定義を書いていいもの = 定義が複数存在してもよいもの = One Definition Ruleの例外は
言語仕様3.2.5で規定されているので各自規格書で熟知すべし。

具体的には、クラス型、列挙型、外部リンケージのインライン関数、クラステンプレート、
静的でない関数テンプレート、クラステンプレートの静的データメンバ、テンプレート引数の一部が
未定のテンプレート特殊化、がそれにあたる。

803:デフォルトの名無しさん
14/03/28 00:29:27.89 7ZcWId+X.net
だれも、規格で認められているかどうかの話をしているわけじゃねぇだろう。

804:デフォルトの名無しさん
14/03/28 00:36:24.93 3sLtcVZJ.net
あれこれ脱線してたけど、発端は>>687だったんだよな。
こいつがヘッダにコードを書いてはいけない理由を言わずにフェードアウトしたから
論点があやふやなまま盛り上がってしまった。

805:デフォルトの名無しさん
14/03/28 00:44:14.23 bndx9KDY.net
>>796
関数テンプレートの半分に inline を付け、残りの半分には付けずに
どうなるか観察するんだ。

806:デフォルトの名無しさん
14/03/28 00:57:01.43 afXKJyWJ.net
struct test {

};

cout <<

807:デフォルトの名無しさん
14/03/28 00:58:37.27 afXKJyWJ.net
struct test {
int a;
};

test t;

cout << t.a;

printf("%d\n",t.a);


このときオペレータってそれぞれなにが使われるんでしょうか?

t.a の値を得る処理にってことです。

808:デフォルトの名無しさん
14/03/28 01:05:51.26 n4ZQH/GV.net
>>687はc++初心者

809:デフォルトの名無しさん
14/03/28 01:36:21.34 f7DW739E.net
>>797
ヘッダーはコンパイラーが提供するもので
プログラマーが書くものではないのだけれど
そこんとこOK?

810:デフォルトの名無しさん
14/03/28 01:38:42.05 eWCuk+g8.net
>>804
え?
どこがOKって?

811:デフォルトの名無しさん
14/03/28 01:41:30.74 3sLtcVZJ.net
お前は何を言っているんだ

812:デフォルトの名無しさん
14/03/28 01:42:24.50 zzqObK8g.net
どこから突っ込むべきなんだこれは

813:デフォルトの名無しさん
14/03/28 01:44:21.20 6NuEA+Qf.net
突っ込むのもアホらしいから(・∀・)ニヤニヤして放置しとこうぜ。
この板には必死で背伸びしてカキコしてる雑魚が確認されてる。

814:デフォルトの名無しさん
14/03/28 01:44:57.80 IWvgfppL.net
>>802
ドットオペレータ(ドット演算子)

815:デフォルトの名無しさん
14/03/28 01:51:22.27 f7DW739E.net
>>805
書いたとおりなのだけれど
日本語が読めない?

816:デフォルトの名無しさん
14/03/28 01:55:19.17 iffS8S5F.net
コンパイラメーカーが提供するインクルードファイルのことをヘッダーって言いたいのかな?

817:デフォルトの名無しさん
14/03/28 02:10:57.21 f7DW739E.net
何故ここでファイルが出てくるのかわからないけど
ISO/IEC 14882:2011の16.2章で出てくるヘッダー以外ありえんでしょう

818:デフォルトの名無しさん
14/03/28 02:44:23.95 calBLgbH.net
>>804
嘘つき

819:デフォルトの名無しさん
14/03/28 02:55:01.76 iffS8S5F.net
何かとても違和感を感じる日本語だ

820:デフォルトの名無しさん
14/03/28 04:15:01.77 tz1oDrc8.net
嘘つき(震え声)

821:デフォルトの名無しさん
14/03/28 07:11:23.51 bndx9KDY.net
>>804
どうでもいいけどこのスレ(前だか前々だか)で2度目だよ
そこんとこOK?

822:デフォルトの名無しさん
14/03/28 08:18:34.16 n4ZQH/GV.net
まとめ
ヘッダーにコードを書く奴をクビにしていいか?
→それだけの情報だけじゃわからないし、あんたC++知ってる?

インラインはヘッダーに書くのが正しい?
→意図的に展開を望むならヘッダーに書け、ソースに書いてリンカに任せる奴は3流

でオッケー?

823:デフォルトの名無しさん
14/03/28 08:22:21.13 ChGgRCpU.net
まとめサイトの人でおk(笑)

824:デフォルトの名無しさん
14/03/28 08:23:03.82 3sLtcVZJ.net
> 意図的に展開を望むならヘッダーに書け

またそこに戻るの? C++に関数を確実にインライン展開する方法なんかないんだってば。

825:デフォルトの名無しさん
14/03/28 10:04:49.02 j2aynJgg.net
マクロで書いちゃえば確実に展開されそうだが、
もはやC++関係無い気がしてきた

826:デフォルトの名無しさん
14/03/28 10:54:55.55 CLpXvs9U.net
インラインアセンブラをマクロ定義すれば。w

827:デフォルトの名無しさん
14/03/28 12:13:00.28 2xoz0m2D.net
>>819
実際やってみれば?gccはなるよ
ただ規格云々じゃなく一部に通用する技だとは思う

828:デフォルトの名無しさん
14/03/28 12:37:10.86 3sLtcVZJ.net
>>822
まあ環境を限定すればそれぞれにノウハウはあるだろうね。

829:デフォルトの名無しさん
14/03/28 16:39:02.96 KxTxPlps.net
>>823
移植性を低下させるバッドノウハウだね

830:デフォルトの名無しさん
14/03/28 16:46:07.33 zzqObK8g.net
最適化なんて割とそういうもん

831:デフォルトの名無しさん
14/03/28 17:19:59.79 konPatBX.net
ポータビリティという名のバッドノウハウ

832:デフォルトの名無しさん
14/03/28 21:04:39.83 n4ZQH/GV.net
ヘッダーにコード書いてエラーになるコンパイラーなんて見たことないので移植性が低下するっつうのは嘘

833:デフォルトの名無しさん
14/03/28 21:11:34.54 1ftEUC5z.net
インライン展開してほしい→ヘッダーにコードって発想ぶっとんでるな

834:デフォルトの名無しさん
14/03/28 22:06:39.76 bndx9KDY.net
>>819
「望む」って日本語のニュアンス次第じゃね?

835:デフォルトの名無しさん
14/03/28 23:10:07.20 WinGstvT.net
>>827
コンパイルエラーにならなきゃいいのか (w

836:デフォルトの名無しさん
14/03/28 23:11:29.84 R2vi+E3z.net
inline付けとけば平気アル

837:デフォルトの名無しさん
14/03/28 23:17:12.63 nIGZYB8c.net
inlin

838:デフォルトの名無しさん
14/03/29 00:45:20.88 +tSITK56.net
inlineって卑猥すぎ。使うなよ

839:デフォルトの名無しさん
14/03/29 00:58:19.51 ukiMHmOI.net
joytoy に変えるか

840:デフォルトの名無しさん
14/03/29 00:59:16.18 ukiMHmOI.net
#define joytoy inline

841:デフォルトの名無しさん
14/03/29 08:19:52.66 1B2wagA9.net
ストリングテーブルを2分木で管理して高速検索できるようにして
かつ、インデックスで即時参照できるようなクラスは作れないでしょうか
map<string, int>だとインデックス検索に時間がかかるし
vector<string>だと検索に時間がかかる
データを2つ用意するのがベストでしょうか

842:デフォルトの名無しさん
14/03/29 08:30:01.43 9XRu23e9.net
インデックスじゃないとダメなのか
ポインタならすぐに参照先が見れるぞ

843:デフォルトの名無しさん
14/03/29 10:17:04.73 lTQLq19d.net
>>836
自作するなら、P-Tree (Trie) とかあるけど
とりあえず unordered_map を加えて時間比較してみたらどうだろう

844:デフォルトの名無しさん
14/03/29 10:47:41.14 kK1JTf3+.net
Boost.MultiIndexContainer

845:デフォルトの名無しさん
14/03/29 11:03:11.34 2SiNGRJb.net
2分木で管理されたらそれはインデックスそのものだと思うのだが「かつ」って何だ?
mapだと検索に時間がかかるという意味が分からない。
mapの複雑さは対数でしょ?

846:デフォルトの名無しさん
14/03/29 11:15:42.10 kK1JTf3+.net
mapのキー以外にも整数インデックスでアクセスできるようにしたいんでそ

847:デフォルトの名無しさん
14/03/29 11:34:09.27 2SiNGRJb.net
ああ、索引のインデックスでなくて
配列のインデックスという意味か

848:836
14/03/29 11:49:07.41 1B2wagA9.net
人工知能もどきを作るのに
ストリングテーブルを作って、その整数インデックスだけで
データを管理したいと考えてたのですが
既登録の単語を検索するときはmapの方が速くて
整数インデックスから文字を見つけるときはvectorが速いので
両方の良さを併せ持つクラスを作れないかと悩んでました
vector<string *>とmap<string, int>の合わせ技と
Boost.Multi_Index_Container試してみます
ありがとうございました

849:デフォルトの名無しさん
14/03/29 11:54:55.97 kK1JTf3+.net
Boost.MultiIndexContainerはテンプレートバリバリに使っていてエラーメッセージが長くなって分かりづらくなることもあるから注意
その使い方ならこのページの「挿入順を知っているstd::set」が近そう
URLリンク(sites.google.com)

850:デフォルトの名無しさん
14/03/29 11:56:54.59 8LVPedzS.net
>>836
データの件数や更新頻度による。
文字列テーブルの要素数はどれくらいなのか、更新頻度はどれくらいなのかがわからないと答えようがない。

851:デフォルトの名無しさん
14/03/29 11:58:46.13 p6y4pL3O.net
つ libstree

852:デフォルトの名無しさん
14/03/29 12:06:01.03 5Prxf0C5.net
そもそも本当に配列インデックスアクセスが必要なのかねぇ。
修正したらインデックスはずれるし
修正しないんならインデックス値の代わりに
ポインター値もっときゃいいんではないかと。
インデックスの大小比較が必要なケースなんだろうか

853:デフォルトの名無しさん
14/03/29 12:07:20.55 WP/G2Jdd.net
答えようが無いって回答が一番アホ
無理して答えなくていいよ

854:デフォルトの名無しさん
14/03/29 12:32:50.14 1B7gf6oU.net
答えようがないから、相談内容に指摘を入れることを理解できない馬鹿や
インラインをヘッダーに書く意味をできない馬鹿がこのスレ多すぎますよ
妄想で物事はか語らずちゃんと勉強して理解した上で語りましょう

855:デフォルトの名無しさん
14/03/29 12:44:59.06 T0jzXlJE.net
QZ がよくやる円状学習ってやつでは?
生暖かいめでツッコミまくるのがいいでしょう

856:デフォルトの名無しさん
14/03/29 18:29:45.78 dD6X7nCn.net
構造体の配列を初期化したいのですが
↓ですと初期化子の数が多すぎるといったエラーになってしまいます。
 struct Hoge { int Piyo; };
 std::array<Hoge, 2> HogeArray = { { 123 }, { 456 } };
どのように記述すればよいでしょうか?

857:デフォルトの名無しさん
14/03/29 18:35:24.51 dD6X7nCn.net
すんません以下のようにしたら通りました。
 std::array<Hoge, 2> HogeArray = {{ { 123 }, { 456 } }};

858:デフォルトの名無しさん
14/03/29 18:37:09.12 kK1JTf3+.net
std::array<Hoge, 2> HogeArray = {{123,456}};でもいい

859:デフォルトの名無しさん
14/03/29 19:02:59.09 AwSwPmzi.net
そのバカくさい二重括弧はC++14で修正予定

860:デフォルトの名無しさん
14/03/29 19:47:58.21 ukiMHmOI.net
構造体の中に構造体があるのか

861:デフォルトの名無しさん
14/03/30 08:27:30.18 VjU+6nmm.net
そのバカくさい二重括弧を排除したら
struct {unsigned sz, ary[100];};
struxt {unsigned ary[100], sz;}; ← この初期化が面倒じゃん
実際は従来記法もそのまま使えるんだろうけどさ

862:デフォルトの名無しさん
14/03/30 11:35:04.42 VZDaHlzY.net
>>856
心配すんな
排除されることはない

863:デフォルトの名無しさん
14/03/30 13:53:57.58 6aZDF4w4.net
C++のプロの人、お知恵をお貸しください

T** m_W;
T func(int y, int x);

void setW() {
for(int y=0 ; y<m_height ; ++y) {
for(int x=0 ; x<m_width ; ++x) {
m_W[y][x] = func(y,x);
}
}
}

のような関数のうち、Tを返すfuncの部分をラムダ式を突っ込めるようなテンプレートにしたいのです。

template<typename T> void setW(??? func) {
for(int y=0 ; y<m_height ; ++y) {
for(int x=0 ; x<m_width ; ++x) {
m_W[y][x] = func(y,x);
}
}
}

という感じになると思うのですが
T型を返すことを強制した関数オブジェクト(?)を指示するためには
???部の型として何を指定するのが適切なのでしょうか?

864:デフォルトの名無しさん
14/03/30 14:10:06.25 mx5qZxk6.net
>>858
引数がint型2個と決まっているなら std::function<T(int,int)>

865:デフォルトの名無しさん
14/03/30 14:25:02.49 0Wbn/Mof.net
>>858
T型を返すってのをどの程度強くことを強制したいかだけど、
m_W[y][x]に代入できればそれでいいような気がする。

template<typename F> void setW(F func);
でいいのでは?

866:デフォルトの名無しさん
14/03/30 14:48:37.61 6aZDF4w4.net
>>859
はい。引数2個限定で問題ありません。
std::functionというので指定するのですね。
勉強になりました。ありがとうございます。

>>860
ありがとうございます。
今回は引数2個限定で良かったので、859さんの方法で良かったのですが
引数の数が変わってくるような場合には便利そうです。
別の機会に使っていこうと思います。

867:デフォルトの名無しさん
14/03/30 15:12:09.92 w88t0C6o.net
functionはポリモーフィックtype-eraseするときに使うものだろ。
この場合template<typename T, typename lambda_t> void setW(lambda_t func);
とするべきでは

868:デフォルトの名無しさん
14/03/30 15:17:52.06 mx5qZxk6.net
>>862
> functionはポリモーフィックtype-eraseするときに使うもの
そうとも限らないと思うけど、この例も一種のtype erasureだよ。
継承関係に関わらず特定のインターフェースを備えた型はなんでも受け入れられるんだから。

869:862
14/03/30 16:22:05.22 w88t0C6o.net
>>863
そだね
猿の勢いで脊髄反射したスマン。
Tを返すことを強制したいなら
result_ofを使えばいいと思ったけど、
呼び出し箇所の数だけテンプレートが
インスタンス化されたらたまらんか。

870:デフォルトの名無しさん
14/03/30 21:13:56.97 ERqvs8f4.net
三角関数の関数ポインタを作ろうと思い以下のようにしたのですが次のエラーがでました。

#include <math.h>
double (*myfunction[])(double) {sin, cos, tan};
エラー:関数定義のようですが、パラメーター リストがありません。外見上の本体をスキップします。

どこか根本的に間違っているのでしょうか?
パラメーターリストというのが良く分からないです

871:デフォルトの名無しさん
14/03/30 21:28:23.54 ktWAco2D.net
(関数の)変数を定義して代入では

872:デフォルトの名無しさん
14/03/30 21:31:05.48 oPW3xR3D.net
>>865
double(*myfunction[])(double)={sin, cos, tan};

873:KUSO KOTE ◆unko./w.Osri
14/03/30 21:37:45.66 6C3OsSaD.net
>>865
配列の初期化の書き方は注意が必要です。
URLリンク(ideone.com)

874:KUSO KOTE ◆unko./w.Osri
14/03/30 21:44:12.52 6C3OsSaD.net
あれ、そもそも何でコンパイル通らないんだ?
コムパイラーは何だろう
 Visual C++: OK
 G++:OK
 clang:OK

875:デフォルトの名無しさん
14/03/30 23:19:29.79 6RO/tmV/.net
もうC++を選択する理由がないんだよな、Windowsプログラミングでも
メモリ意識とかやってられないし、C#に完全に置き換わったよ

メモリオナニーしすぎだろC++えrって

876:デフォルトの名無しさん
14/03/30 23:21:03.61 TtK4Vlhp.net
別にWindowsで仕事してないし

877:デフォルトの名無しさん
14/03/30 23:28:38.13 6RO/tmV/.net
ああ、Macってこと?なるほどね

なんの思想にかぶれちゃったのかね

878:デフォルトの名無しさん
14/03/30 23:30:56.06 7KxU0paA.net
何言ってんだコイツ?

879:デフォルトの名無しさん
14/03/30 23:32:27.80 TtK4Vlhp.net
Mac(笑)

880:デフォルトの名無しさん
14/03/30 23:33:22.66 qrMW5ntB.net
一人だけレベルの低い奴いないかここw

881:デフォルトの名無しさん
14/03/30 23:34:08.27 6RO/tmV/.net
別にWindowsで仕事してないし の意味がちょっとわからなかったんだ
Windowsで仕事をしてるのか、Windowsアプリケーションを作る仕事しているのかね

前者の場合、言葉の意味を勘違いしてる輩かと思って、俺はMac派ですよみたいな思想
あーいう感じはちょっと受け入れられないね

882:デフォルトの名無しさん
14/03/30 23:40:44.70 s2pjmqPg.net
>>865
C++11にはイニシャライザリストってのがあるらしいんだけど、
それを使うように記述したのが>>865じゃないの?

883:デフォルトの名無しさん
14/03/30 23:41:22.91 //pyQIJP.net
OpenVMSとVxWorksだから(棒
いやまあ、両OSでC++使えるようになって、かなり楽になったよ

884:デフォルトの名無しさん
14/03/30 23:59:59.81 VZDaHlzY.net
>>876
Linux知らないの?

885:デフォルトの名無しさん
14/03/31 00:06:43.04 4LHV21Ew.net
C++ではMacが最強だろ。Clangと言えばMac。

886:デフォルトの名無しさん
14/03/31 00:07:16.15 iPLvWewK.net
>>870
きちんとしたドメインモデルを作ろうとしたらやっぱりC++では?

887:デフォルトの名無しさん
14/03/31 00:08:40.75 JMzV2FUX.net
MacはObjectiveCが何ちゃらと噂に聞くが

888:デフォルトの名無しさん
14/03/31 00:08:53.07 YuwcCGee.net
LinuxはCでしょ

889:デフォルトの名無しさん
14/03/31 00:31:25.16 h/7kGidF.net
c++代表Qt

890:デフォルトの名無しさん
14/03/31 00:51:35.78 5uvxJF26.net
>>881
そこはもうC#の方がやりやすい

891:デフォルトの名無しさん
14/03/31 00:59:35.85 4LHV21Ew.net
Winでは低脳・ゆとりの似非C++使いはMFC、真のC++使いはQtって感じになっているからな

892:デフォルトの名無しさん
14/03/31 01:01:48.52 3ugtc2xG.net
C++がモデル化に於いてC#やJava()より上な訳がないだろう
視野の狭くなった老人はここまでボケと妄想が激しいものなのか

893:デフォルトの名無しさん
14/03/31 01:39:04.83 YuwcCGee.net
んなことはないC#は洗練されている

ネットワークプログラミングするときはC++ではつまづく

894:デフォルトの名無しさん
14/03/31 02:09:05.98 aH5oPSHV.net
老害が無理してC++理解しようとすると決まって発狂するな

895:デフォルトの名無しさん
14/03/31 02:35:58.26 h/7kGidF.net
>>888
まさかC++ではsocket/winsockを使ってないよな

896:デフォルトの名無しさん
14/03/31 03:02:46.32 JKT8WNOO.net
asio使え、asio。そいでC++の迷宮を彷徨え

897:デフォルトの名無しさん
14/03/31 04:59:04.83 ftA6xnEH.net
AsioはLinuxでうまく機能しない。
非同期プログラミングができるライブラリ全般がうまく機能しないと考えて
差し支えない。

898:デフォルトの名無しさん
14/03/31 18:43:25.87 yborCUTf.net
今からC言語を勉強し始めるものですが、Visual Studioはどの年のものをインストールした方がよろしいでしょうか?

899:デフォルトの名無しさん
14/03/31 18:58:16.49 FN8LC2rG.net
>>893
最新いれとけ

900:デフォルトの名無しさん
14/03/31 19:16:22.59 yborCUTf.net
>>894
いれようとしたらWindowsが古いって言われました

901:デフォルトの名無しさん
14/03/31 19:17:48.49 JMzV2FUX.net
条件あとだしやめい

902:デフォルトの名無しさん
14/03/31 19:17:51.67 NWhaiSr6.net
>>895
まて、お前はまず Windows を新しくしなければならん
来週までにな

903:片山博文MZジェバンニ ◆T6xkBnTXz7B0
14/03/31 19:23:16.60 60O6Nh3u.net
VS2008入れとけ

904:デフォルトの名無しさん
14/03/31 19:23:49.11 yborCUTf.net
近い内に買うと思う、XPだから
でも母次第です

905:デフォルトの名無しさん
14/03/31 19:29:36.88 FN8LC2rG.net
>>899
金が無いなら UbuntuかPC-BSDいれたら?
無料だしセキュリティもしっかりできるし。

コンパイラとか開発環境も全部無料でついてくるし
ツールやOSのソースコードも全部見えるから勉強にもなる。

906:デフォルトの名無しさん
14/03/31 19:31:26.73 i99iYryZ.net
VSでやりたいことがはっきりしてる場合は
そのやりたいことのサンプルとか参考になりそうなプロジェクトファイルを配布しているかどうかをしらべ
そのプロジェクトファイルのバージョンに合わせておくのが無難

907:デフォルトの名無しさん
14/03/31 19:35:25.75 aH5oPSHV.net
母親に頼んで買ってもらえ
アカデミックパックなら安く買えるだろ
学生の特権なんだし

908:デフォルトの名無しさん
14/03/31 19:42:13.49 DtbGifhU.net
>>900
Visual Studioのインストールごときにてこずるような初心者にそんなもの勧めるな
「来週以降ネットに繋ぐな」と言い渡して去るのが真の優しさ

909:デフォルトの名無しさん
14/03/31 19:57:11.33 dwfvfwUS.net
回路とか好きな引きこもりの義弟にVSあげたんだけど使ってくれてるかなあ
俺が電話変わってもらうと無言か切られるかだからわからん

910:デフォルトの名無しさん
14/03/31 20:01:36.02 FN8LC2rG.net
>>903
いや、このXPのドタバタの間にちょっとでもユーザー増やしたいなぁ・・・と

911:デフォルトの名無しさん
14/03/31 20:07:44.05 JMzV2FUX.net
正直Gnuのソースは読みにくい

912:デフォルトの名無しさん
14/03/31 20:09:20.82 FN8LC2rG.net
>>906
それは同意。
「公開せにゃならんやったら、せめて読みづらくしとこ」
って感じなのかと思うくらい酷いのあるね。

913:デフォルトの名無しさん
14/03/31 20:12:14.52 JMzV2FUX.net
前に勉強がてらコマンドのソースとかみようとしてやめた
関数名の前で改行とかいるのかね?

みるならFreeBSDのほうがきれい

914:デフォルトの名無しさん
14/03/31 21:00:34.11 xTBmJi7C.net
GNUはオープンにしてただで使えるだけで有難いと思え、乞食って感じだろ
欧米のプログラマはギブアンドテイクだけど(ギブが先)
でも、乞食(日本のドカタ)はテイク、テイク、ギブするのは文句だけだからな

915:デフォルトの名無しさん
14/03/31 21:47:43.53 aH5oPSHV.net
DTV板とか行くと文句たらたらのコジキしかいないよ
自炊が鉄則なのに文句だらけ

916:デフォルトの名無しさん
14/03/31 21:50:33.54 b96nnelI.net
>>908
あの改行には神の見えざる何とかみたいな壮大な名前がついてて由来とかもあるんだよね。
全然興味なかったんで三秒で忘れちゃったけど。

917:デフォルトの名無しさん
14/03/31 22:43:13.46 xTBmJi7C.net
>>910
乞食、それは日本の美しい魂
そしてそれを行動にした、テイク、テイク、ギブするのは文句は日本の美しいおこないなのかもな

918:デフォルトの名無しさん
14/03/31 23:27:31.97 JKT8WNOO.net
どこぞのオプソ・プロプラのプロジェクトを
著作権違反しない程度にマネてオリジナル主張


919:するのがGNU 全部とは言わないがGNU系のプロジェクトにオリジナリティなどほとんどない



920:デフォルトの名無しさん
14/04/01 01:02:08.41 b5JB/Jhx.net
いまやオリジナリティを有するものって日本発が多い
IT先進国の日本のものがパクられるのは仕方ない

921:デフォルトの名無しさん
14/04/01 01:39:10.72 M/SUb6RV.net
>>911
関数の宣言や呼び出しと、実装を分けることができるから
つまり)の直後が改行なら実装
古い時代の文化だけど

922:デフォルトの名無しさん
14/04/01 01:52:27.98 0nwPuo2f.net
消費税が上がるらしい

923:デフォルトの名無しさん
14/04/01 02:30:23.14 SxmvLrt8.net
>>916
エイプリルフール

924:デフォルトの名無しさん
14/04/01 03:14:35.48 Xl1FJm59.net
>>913
逆だ、GNU より先にめだったオプソがあったのか?BSD ライセンスくらいしかなかったのでは?

925:デフォルトの名無しさん
14/04/01 03:15:10.37 Xl1FJm59.net
>>914
そんなもんがあるのか?実例よろしく

926:デフォルトの名無しさん
14/04/01 03:57:50.76 QacWHPnJ.net
URLリンク(ja.wikipedia.org)

こういう人がいたんだよね

927:デフォルトの名無しさん
14/04/01 10:32:45.63 SqhIr943.net
>>913
プロプラなもののより良い代替をオプソで提供するのがGNUのそもそもの目的だから、何か微妙に勘違いしてないか?

928:デフォルトの名無しさん
14/04/01 19:44:07.99 PR3x9no5.net
>>918
public domain

929:デフォルトの名無しさん
14/04/01 20:12:39.33 eefQLiAy.net
boostの多くは日本語のwebにあったのを参考にして作ったのが多いらしいよね

930:デフォルトの名無しさん
14/04/01 23:16:09.35 dzlTlaxn.net
よね、と言われてもな
ソースくれよソース

931:デフォルトの名無しさん
14/04/01 23:35:49.48 8KYb0WXA.net
起源は韓国ニダ

932:デフォルトの名無しさん
14/04/01 23:58:44.85 BTv6StGE.net
boostで日本人だと言われても、k.inaba氏くらいしか知らんぞなもし

933:デフォルトの名無しさん
14/04/02 22:18:15.83 ntgtG/kn.net
boostは新しいC++の土台になっているよな
つまり日本はすごくC++に貢献しているってことだよな
華々しい表は欧米の奴らに持たせ、日本は縁の下の力持ちとして強力貢献って感じか

934:デフォルトの名無しさん
14/04/02 22:54:04.05 af4pwMis.net
そんなことに国を持ち出さないでくれ
優秀な奴がたまたま日本生まれだっただけだろう
ただ…超便利!

935:デフォルトの名無しさん
14/04/02 22:58:16.91 F+VXkOpH.net
インターフェースクラスをテンプレートにするのってアリでしょうか?
そういうのを見たこと無くて違和感があるんですが。

class Aがclass Bを所有してます。
AはBの関数を呼んでますが、Bの方もAの関数を呼ぶ必要があり、
直接相互に呼びあうのは行儀が悪いのでBが呼ぶ部分をインターフェースとして切り出しています。

class A : public IA{
vector<B *> member;

class B{
public:
B(IA *owner)
: m_owner(owner){}

void xxx(){
m_owner->func();
}

みたいな感じで。実際はもうちょっと複雑なんですが。
で、Bが保持するデータの型をパラメータしたくなったんですが、
そのデータはAにインターフェースを介して渡してもいるという状態です。
あ、ちなみにこのインターフェースはB以外からは呼ばれることはありません。

936:デフォルトの名無しさん
14/04/02 23:55:29.98 J7anNUIN.net
相互参照が発生してる時点で違和感がある C++は相互参照を上手く扱えないのでそれを取り除くことから考えてみたらどうか

937:デフォルトの名無しさん
14/04/03 00:31:02.32 03j6Q/GA.net
そもそも >>929 が書いたコードは } が2つ程足りないのだが

938:デフォルトの名無しさん
14/04/03 00:42:49.70 oq+5i/Zd.net
>>931
そうなっているのは、こんな感じって示すコードだからだろ

939:デフォルトの名無しさん
14/04/03 01:09:14.39 03j6Q/GA.net
フラクタル構造だろコレ
無理に決まっているジャン

940:デフォルトの名無しさん
14/04/03 01:56:33.54 03j6Q/GA.net
よくよく見たらIAを参照しているだけだからネストしてもいないんだな
というか普通にできるんじゃね?

941:デフォルトの名無しさん
14/04/03 02:33:18.90 CBuO+9f9.net
小手先の実装はどうでもよくてAにメンバ関数テンプレートを持たせるのが本質的な解法じゃないのか

942:デフォルトの名無しさん
14/04/03 07:03:25.84 giRIvbWR.net
>>931
そんなことは全く問題にしてない

943:デフォルトの名無しさん
14/04/03 07:26:26.82 7TERZTkc.net
>>929 のコード片見て後略とわからない奴がいるとは...

944:デフォルトの名無しさん
14/04/03 23:01:08.26 ED9H8RNO.net
>>929
ごめん、ちょっとよくわからない。
template をどこにつける意図?

1.class IA
2.class A
3.そのメンバ

945:デフォルトの名無しさん
14/04/04 08:29:34.22 ziFJe0J7.net
皆さんレスありがとうございます

>>938
BにtemplateつけたくなったらIAにもつけなくてはならなくなった、みたいな感じで

template<typename Data>
class A : public IA<Data>{
vector<B<Data> > member;

template<typename Data>
class B{
Data data;
public:
B(IA<Data> *owner)
void xxx()
{
m_owner->func(&data);
}

template<typename Data>
class IA{
virtual void func(Data *){}
};

みたいになるのかな

>>935
えーと、となると
インターフェースにメンバ関数テンプレートを持たせるのはアリか?
という質問になりますね

946:デフォルトの名無しさん
14/04/04 08:48:27.82 kYKaj4mW.net
JAVA() がインターフェースにメソッドの実装を書ける程度には
忌みがあるだろう
だが普通はしない

947:デフォルトの名無しさん
14/04/04 13:06:47.93 teewvH1C.net
インターフェイスクラスなんか用意せずにA<Data>,B<Data>で直接よび合えばいいじゃん
プログラミングにおいては直接的・機能的な設計・実装をさまたげる個人的な価値観や美意識は有害なだけで不要でしょ

948:デフォルトの名無しさん
14/04/04 16:52:35.16 8Cig6QUM.net
>>930
読んで「は?」と思ったから調べたけど相互参照NG説のソースが見つけられなかった

迷信?それとも根拠ある主張?

949:デフォルトの名無しさん
14/04/04 17:02:40.96 rdn2uojJ.net
とりあえず>>929>>939が開いた括弧をとじるよ
};
};
};
};

950:デフォルトの名無しさん
14/04/04 18:02:23.96 h+qk3VAa.net
>>942
相互参照してるとオブジェクト破棄の責任が決まらず、リソースリークや二重破棄を引き起こす可能性がある。
もちろん片方をshared_ptrにしてもう片方をweak_ptrにするなどして所有なのか只の参照なのかを明確にすれば安全に相互参照はできる。相互参照というより相互に所有するのが問題だったね、申し訳ない。

951:デフォルトの名無しさん
14/04/04 18:23:55.67 8Cig6QUM.net
>>944
要するにC++の言語仕様上の問題に過ぎず、オブジェクト指向一般の話では相互参照や循環参照は問題ないってことかぁ?

952:デフォルトの名無しさん
14/04/04 18:50:26.91 h+qk3VAa.net
>>945
他の言語はあまり詳しく知らないけど、GCが用意されていたり、参照を基本としたりする他の言語では問題は小さいだろう

953:デフォルトの名無しさん
14/04/04 18:59:12.33 tpgdbbWH.net
>>945
適切に設計すれば問題はないが、注意しろってはなしだろ

954:929
14/04/04 19:17:02.12 ziFJe0J7.net
今帰宅しました
皆さんレスありがとうございます

>>942
相互参照NGの理由はジョン・ラコスの「大規模C++ソフトウェアデザイン」で書かれています
確か
・コンパイル・リンク時のコストが増大すること
・お互いに単独で使用できないので単体試験ができない
等が理由に挙げられていたと思います

>>943
ありがとうございます^^

>>930
概念的に独立したクラスが相互参照しているわけではなく、
Graph,Edge,Vertexみたいな感じの関係のクラスなんです
例えがパッと浮かばなかったので>939ではレス返せませんでした、すみません

955:デフォルトの名無しさん
14/04/04 19:34:13.91 h+qk3VAa.net
>>948
>>929,>>939について、Bの持つデータ型が複数あるというが、単一のAが所有するBはそれぞれ同じ型のデータを持つのか?そうならばIAやAをテンプレートにして、A<T>::BやA<U>::BをA<T>やA<U>がそれぞれ所有するのがいいだろう。
単一のAが複数の型のBを所有する場合にはもう少し複雑な機構が要求されるだろう

あと、生ポインタを使うと意図がわかりづらくなるので、適切なスマートポインタやクラスを用いるべき

956:デフォルトの名無しさん
14/04/04 19:39:28.67 eu/rYsXw.net
利用だけならナマポ使っちゃうな
インスタンス管理でどっちも死なないことが分かってるし

957:片山博文MZジェバンニ ◆T6xkBnTXz7B0
14/04/04 23:43:32.61 CAL3SSDr.net
質問です。
inline const char *func(void){
static const char *s = "…ものすごく巨大なデータ…";
return s;
}
複数のコンパイル単位から参照される巨大なデータを
うまくヘッダに埋め込むにはどうすればいいか?

958:デフォルトの名無しさん
14/04/04 23:49:30.08 wXNGFrYS.net
// huge_data.h
extern const char* const s;

// huge_data.cpp
#include "huge_data.h"
const char* const s = "...huge data...";

こういうこと?

959:デフォルトの名無しさん
14/04/04 23:53:22.93 CAL3SSDr.net
.cpp不要で重複なしにしたいらしいです。

960:デフォルトの名無しさん
14/04/05 00:09:53.25 NnouwwX7.net
__declspec(selectany)

961:デフォルトの名無しさん
14/04/05 00:10:33.60 N4PVE6y4.net
URLリンク(0xcc.net)
これ使ってexternすれば

962:929
14/04/05 00:11:02.58 HMLu+RLn.net
>>949
単一のAが所有するBは全部同じ型です
AがBの生成、破棄を担ってて、生存期間も同じなのでナマポのままでいきます

とりあえず色々ご意見頂けたので質問は閉じさせて頂きます
どうもありがとうございました!


あ、>948の補足です
相互(循環含む)参照しないことのメリットは依存性に明確な順序をつけることが可能なことです
A→Bを(Bが変更されるとAのコンパイルが必要)を意味するとします

A←→BとかA→B→C→A→…とかになっているとそれらのクラスをまとめて試験しなければなりません
A→B→C→DとなっていればDを試験して十分信頼性が高くなったらCを試験して、と段階的にいけるということです

963:片山博文MZジェバンニ ◆T6xkBnTXz7B0
14/04/05 01:05:19.01 kCbCwa1D.net
ポータブルでスマートな解決策はC++にはないでFA。

ありがとうございました。

964:デフォルトの名無しさん
14/04/05 01:18:58.03 Q7PCNbm7.net
>>957
それって前にも上がってたやつじゃダメなの?

template <int N>
struct banzai {
static const char* s_char;
};

template <int N>
const char* banzai<N>::s_char = "abcdefghijklmnopqrstuvwxyz";

inline const char* s_char()
{
return banzai<425>::s_char;
}

965:デフォルトの名無しさん
14/04/05 01:25:12.80 DYmjPU4E.net
>>951
そのコードで何か問題あるの?やりたいことができてるように見えるんだけど。

966:デフォルトの名無しさん
14/04/05 01:37:41.29 kCbCwa1D.net
>>959
ものすごく巨大なデータが何個も作られたら嫌だろ

967:デフォルトの名無しさん
14/04/05 01:45:32.24 DYmjPU4E.net
>>960
そんなことにはならないよ。
7.1.2 [dcl.fct.spec] p4
> ... A string literal in the body of an extern inline function is the
> same object in different translation units. ...

968:デフォルトの名無しさん
14/04/05 01:50:56.07 YrLzJmoN.net
普通のSingleton

969:デフォルトの名無しさん
14/04/05 01:57:47.22 Q7PCNbm7.net
>>962
>>953

970:KAC
14/04/05 02:06:26.69 Dr+e6snh.net
問題の出し方がいまいちよくわからんね。
たぶん、#include使って複数から参照するって話でもしたいのかと。

971:デフォルトの名無しさん
14/04/05 02:06:28.48 kCbCwa1D.net
>>961
それはC++0xからだっけ?

972:KAC
14/04/05 02:07:17.21 Dr+e6snh.net
安価忘れた orz

973:デフォルトの名無しさん
14/04/05 03:13:14.83 DYmjPU4E.net
>>965
いや、C++98からずっと。

974:デフォルトの名無しさん
14/04/05 04:04:26.33 Ir5lnMtW.net
>>958
特定の意味を持つ変数を整数で識別するなよ
お前はローカル変数もをv001,v002,v003…にしてるのか?

>>964
ヘッダに入れたいと言ってるんだから
コンパイル速度の話でなくて複数翻訳単位で
実体を同じにするという話だろjk
(すでになってるが)

975:片山博文MZジェバンニ ◆T6xkBnTXz7B0
14/04/05 05:21:00.49 kCbCwa1D.net
俺のMinGW g++がおかしいのか? 同じデータをいくつも埋め込むんだが

976:KUSO KOTE ◆unko./w.Osri
14/04/05 06:50:35.55 ILQmFswz.net
>>969
externが足りないからじゃなくて?

ISO/IEC 14882:1998 7.1.2 段落4
A static local variable in an extern inline function always refers to the same object.

extern inlineの部分はタイプライターっぽいフォント。

977:デフォルトの名無しさん
14/04/05 07:21:57.84 Lxf79fPB.net
ものすごく巨大なデータをヘッダに書かなければならない自分をまずどうにかしろよ

978:デフォルトの名無しさん
14/04/05 07:26:30.69 4p3tjfYN.net
externが要るのか知らんかった
・extern inline内の静的変数は実体が同じ
・extern inline内の文字列リテラルは実体が同じ
前者はsが同じアドレスになって
後者は"...huge data..."が同じアドレスになる

関数がexternならsにstaticは要らないということか

979:デフォルトの名無しさん
14/04/05 07:34:17.87 eKUnQEXz.net
関数がexternでなくても
inlineでなくても
sにstaticがいる筈がない

980:デフォルトの名無しさん
14/04/05 07:47:12.92 rrGengiU.net
俺C/C++はよくわからんが、
// huge_data.h
extern const char* const s;

// huge_data.cpp, huge_data.hはインクルードしないでグローバルで
const char* const s = "...huge data...";

// sを使うhuge_data.cpp以外の.cppでは
huge_data.hをインクルード

これでは駄目なのか?

981:デフォルトの名無しさん
14/04/05 08:04:10.88 4p3tjfYN.net
>>974
質問者の意図は「何とかしてヘッダだけで済ませる方法はないか」
なのだから、その回答では駄目だな

982:片山博文MZジェバンニ ◆T6xkBnTXz7B0
14/04/05 08:17:35.23 kCbCwa1D.net
VC2008,BCC32の場合はexternを付けなくても単一になった。
g++の場合はextern付けても単一化されなかった。
g++の問題みたいですね。

983:デフォルトの名無しさん
14/04/05 08:23:09.04 cxjx9B8n.net
↑これが最後のファイナルアンサー

984:デフォルトの名無しさん
14/04/05 08:46:29.27 rrGengiU.net
>>976
付けなくても単一になったって、
仕様上はextern付けないと駄目なんだろ。VC/BCCは警告ぐらい出るようにしないと駄目だろ

985:デフォルトの名無しさん
14/04/05 08:48:36.70 e3mydc3l.net
↑論理的思考の出来ない馬鹿

986:デフォルトの名無しさん
14/04/05 08:52:58.41 kCbCwa1D.net
bug-g++@prep.ai.mit.eduにバグレポート送りました

987:デフォルトの名無しさん
14/04/05 08:54:16.09 e3mydc3l.net
ところでさ
static inline void f();
extern inline int & f() {
 static int var;
 return var;
}
っていう関数fは内部リンケージを持ちながらも
varは翻訳単位間で同一になっちゃうの?
おかしくね?

988:デフォルトの名無しさん
14/04/05 09:01:48.91 Q7PCNbm7.net
そのうちまた、「ヘッダはコンパイラが提供するものなのであなたが作らないでください」厨が現われる。

989:デフォルトの名無しさん
14/04/05 09:22:37.95 S+nT1w4a.net
煽るなよ
一応規格ではそういう定義なんだから

990:デフォルトの名無しさん
14/04/05 10:40:34.53 90I2C7qj.net
今時g++なんて使う奴は情弱

991:デフォルトの名無しさん
14/04/05 11:10:50.62 ptPAYM2R.net
今はh++がきてます

992:デフォルトの名無しさん
14/04/05 11:24:36.69 4p3tjfYN.net
次スレ
C++相談室 part112
スレリンク(tech板)

993:デフォルトの名無しさん
14/04/05 12:39:58.92 jmoC0q2p.net
>>986
おつ

994:片山博文MZジェバンニ ◆T6xkBnTXz7B0
14/04/05 14:04:18.14 pKk9GxNe.net
clang++はwindowsで使えないからなあ。。。

995:デフォルトの名無しさん
14/04/05 14:16:06.85 p10Tb89F.net
時代遅れ

996:デフォルトの名無しさん
14/04/05 14:18:56.48 OrTtrRA7.net
windowsはまだまだ現役でしょ

997:デフォルトの名無しさん
14/04/05 16:24:57.59 LokGB3M7.net
勉強用としてはgccのヘンテコな仕様よりはVC++の方がマシ
clangが使えるならclang一択

998:デフォルトの名無しさん
14/04/05 19:21:33.76 x1RB96gi.net
gccがヘンテコとか、何を持ってそう言っているのかすごい気になる

999:デフォルトの名無しさん
14/04/05 19:27:40.68 IFpoXzod.net
気になるというか、凄く臭い立つしったか臭があるだけだがw
偉大なるgccを批判できるような力量もってるやつなんて、この板にはいない。

1000:デフォルトの名無しさん
14/04/05 20:12:49.24 RDsNMK1o.net
sun os 4.x でgccの野良ビルドは大変でした。

1001:デフォルトの名無しさん
14/04/05 20:39:33.53 anSZmmIR.net
某虫の記事であったけどvariable length array in structureとか勝手に拡張すんなってことだろ
批判されても仕方ない

1002:デフォルトの名無しさん
14/04/05 20:39:37.54 EOtAE3K1.net
gccが駄目でclangの普及が加速しているんだろ
長い間の繰り返し建て増しで劣化したって感じじゃないのか
建て増しって言えばC++だが

1003:デフォルトの名無しさん
14/04/05 21:03:16.44 x1RB96gi.net
>>995
でもそれC++14で規格になるんでしょ(Linuxのカーネルソースで使われてるし・・・とか江添さん言ってた気がする)
gccの内部の作りが複雑怪奇なのはそうかもしれんが、仕様がヘンテコってのはやっぱりおかしい

1004:デフォルトの名無しさん
14/04/05 21:05:26.99 3z3TJ4eu.net
仕様が~実装が~って言ってると自分が満たされるんだろうよ。
ほっとうこうず。たぶんそいつそれ以上いじっても何一つ有益なもん出てこない。

1005:デフォルトの名無しさん
14/04/05 21:20:07.43 anSZmmIR.net
勉強用って話だから初学者が拡張と知らずにその記法を覚えたらどうすんだってことだろ

1006:デフォルトの名無しさん
14/04/05 21:25:19.87 p10Tb89F.net
>>997
なってねーよハゲ

1007:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1008:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


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