◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part117 [転載禁止]©2ch.net YouTube動画>1本


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1431187685/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1 :デフォルトの名無しさん:2015/05/10(日) 01:08:05.30 ID:mDK/R5EU
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part116
http://peace.2ch.net/test/read.cgi/tech/1424782918/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.95【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1423872914/

次期規格C++1zはこちら
C++14/C++1z 20
http://peace.2ch.net/test/read.cgi/tech/1410382924/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/

2 :デフォルトの名無しさん:2015/05/10(日) 01:09:21.99 ID:mDK/R5EU
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

3 :デフォルトの名無しさん:2015/05/10(日) 01:10:25.74 ID:mDK/R5EU
----テンプレここまで----

4 :デフォルトの名無しさん:2015/05/10(日) 06:48:19.63 ID:5MtNbzlR
いったいどういう経緯でできた天麩羅なんだ?

5 :デフォルトの名無しさん:2015/05/10(日) 12:02:04.93 ID:M5B2Klw4
理不尽な相談はするなという戒めを実例にて示した天婦羅です

6 :デフォルトの名無しさん:2015/05/10(日) 15:46:08.18 ID:R0t9wz1G
ネチケ議論は余所でやれって天麩羅に入れとけよ

7 :デフォルトの名無しさん:2015/05/10(日) 16:29:05.14 ID:2+d7/Ruu
>>6
そんなに悔しかったのかよ w

8 :デフォルトの名無しさん:2015/05/10(日) 18:35:27.90 ID:R0t9wz1G
>>7
へー、おまえ悔しかったのか
おまえ自分が悔しいときの日本語の使い方がネイティブと違うな

9 :デフォルトの名無しさん:2015/05/10(日) 19:38:17.31 ID:EXAqh8EA
今週の素敵なお知らせ
すごいことに台風が来ます。
台風を楽しみましょう。
でも、ちょっとは注意しましょう。

10 :デフォルトの名無しさん:2015/05/10(日) 19:44:49.06 ID:nvCygbIQ
なんか寒いと思ったら低気圧で寒いのか。

11 :デフォルトの名無しさん:2015/05/10(日) 20:34:10.19 ID:B3f5+uPE
> そんなに悔しかったのかよ

これ見て本人が悔しがってると思うとか、どこの国の人なんだろう... w

12 :デフォルトの名無しさん:2015/05/10(日) 22:20:23.55 ID:R0t9wz1G
気にするな、このスレにいると少しばかりエスパー能力に目覚めるのさ

13 :デフォルトの名無しさん:2015/05/10(日) 23:05:11.13 ID:pprxUkHe
悔しいニダ、悔しいニダ

14 :デフォルトの名無しさん:2015/05/13(水) 21:53:42.78 ID:wpNFBBEC
ごめんください。だれかいますか?

15 :片山博文MZ社外取補 ◆T6xkBnTXz7B0 :2015/05/13(水) 21:55:10.58 ID:cKVTGKhm
誰も居ないよ

16 :デフォルトの名無しさん:2015/05/13(水) 22:23:47.71 ID:wpNFBBEC
あれ、体液取引所の所長じゃないですか。ここが体液取引所だったんですか

17 :片山博文MZ社外取補 ◆T6xkBnTXz7B0 :2015/05/13(水) 22:30:06.64 ID:cKVTGKhm
>>16
早く本題に入ってくれ

18 :片山博文MZ社外取補 ◆T6xkBnTXz7B0 :2015/05/13(水) 22:41:44.18 ID:cKVTGKhm
時間切れだ

19 :デフォルトの名無しさん:2015/05/13(水) 23:51:59.04 ID:ge68r1dD
http://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/tutorial/tuttimer5.html
ここみていろいろ遊んでるときに気づいたことがあったので質問です
(このページの主題は質問とは無関係です)

#include <functional>
#include <boost/asio.hpp>
#include <boost/bind.hpp>

int main() {
boost::asio::io_service io;
auto fb = boost::bind(&boost::asio::io_service::run, &io);
auto fs = std::bind(&boost::asio::io_service::run, &io); // こっちだけエラーがでる
}

このようなコードを書くと、std::bindのほうだけ

prog.cc:8:15: error: no matching function for call to 'bind'
auto fs = std::bind(&boost::asio::io_service::run, &io);
^~~~~~~~~
/usr/local/libcxx-3.6/include/c++/v1/functional:2184:1: note: candidate template ignored: couldn't infer template argument '_Fp'
bind(_Fp&& __f, _BoundArgs&&... __bound_args)
^
/usr/local/libcxx-3.6/include/c++/v1/functional:2193:1: note: candidate template ignored: couldn't infer template argument '_Rp'
bind(_Fp&& __f, _BoundArgs&&... __bound_args)
^
1 error generated.

といったエラーが出ます
boost::bindとstd::bindでなぜこのような違いがでてくるんでしょうか?

20 :デフォルトの名無しさん:2015/05/14(木) 09:43:44.06 ID:feLJNGyl
MinGW-w64のGCC4.9.2でSTLのコンテナとunique_ptrの組み合わせなのですが
template class std::vector<std::unique_ptr<int>>;
ではunique_ptrのコピーコンストラクタが使えない系のコンパイルエラーが出てしまいます
エラーを出さずに明示的に実体化させる方法が知りたいです

21 :デフォルトの名無しさん:2015/05/14(木) 11:21:27.46 ID:2vPR+87d
>>20
メンバ関数使用の有無によらず実体化しようとするだろうから、無理かな。

ところで、その明示的実体化でどういう効果を狙ってるのか、気になるんで
よかったら教えてもらえない?コンパイル時間とか実行効率とかの話?

22 :デフォルトの名無しさん:2015/05/14(木) 12:21:40.85 ID:feLJNGyl
>>21
ありがとうございます

23 :デフォルトの名無しさん:2015/05/14(木) 12:22:30.64 ID:72Krvoec
>>19
よくわからんけど何かかぶってない?
_1とか_2がBoostとstdでかぶっててエラーになる現象があるから。

24 :デフォルトの名無しさん:2015/05/14(木) 17:46:19.08 ID:pdSmJ/DC
そのvectorをコピーしているというオチだったりして。

25 :デフォルトの名無しさん:2015/05/14(木) 23:36:03.59 ID:1cp8I+0y
boostは糞

26 :デフォルトの名無しさん:2015/05/15(金) 00:35:49.12 ID:AycHoo+e
>>23
using std::placeholdersとかはやってないから多分かぶることはないと思うんですが、
詳しく調べてない(そもそも詳しい調べ方さっぱりわからない)のでよくわからないです

27 :デフォルトの名無しさん:2015/05/15(金) 21:39:30.85 ID:hBLf1mma
>>19
&boost::asio::io_service::runの&を消すとどうなる?

28 :デフォルトの名無しさん:2015/05/15(金) 22:27:30.43 ID:zZMU22PT
やっぱlibstdc++やlibc++は糞なんやな。boostはさすがやで。
引数の数からオーバーロード候補を選んでくれるんやな。

29 :デフォルトの名無しさん:2015/05/15(金) 23:06:13.12 ID:AycHoo+e
>>27
error: call to non-static member function without an object argument
っていうエラーが出ます(boost, stdいずれも

30 :デフォルトの名無しさん:2015/05/15(金) 23:51:15.52 ID:zZMU22PT
>>29
まだウダウダやってんのk?runにはオーバーロードが二つあるんだよ。
std::bind((std::size_t(boost::asio::io_service::*)())&boost::asio::io_service::run, &io);

31 :デフォルトの名無しさん:2015/05/16(土) 01:58:40.73 ID:jUULRVoQ
例:
a.cpp:
template<class T> void foo(T x) { printf("func_a: x=%d\n", x); }
void bar(int x) { foo(x); }

b.cpp
template<class T> void foo(T x) { printf("func_b: x=%d\n", x); }
void bar(int x) { foo(x); }

みたいなケースでテンプレート関数fooをファイルスコープにしたいのですが
やっぱnamespace使うしか無いですかね…

32 :デフォルトの名無しさん:2015/05/16(土) 01:59:00.02 ID:tglcZs5s
>>30
引数の個数に応じたオーバーロードが2つあって、
std::bindはその解決ができないけどboost::bindはできるってことでしょうか?
ありがとうございます

33 :31:2015/05/16(土) 02:00:09.11 ID:jUULRVoQ
スマンTなのにprintf()の書式が"%d"決め打ちなのは主題とはそれるので堪忍して下さいorz

34 :デフォルトの名無しさん:2015/05/16(土) 07:59:16.15 ID:Tl0WsJOW
>>31
http://ideone.com/L65302

35 :デフォルトの名無しさん:2015/05/16(土) 08:43:18.68 ID:FC5432uw
いまどきbindなんて余程のことが無い限り使わないと思うんだが
どんなレガシーコードだよ

36 :デフォルトの名無しさん:2015/05/16(土) 09:08:25.28 ID:RtDXuCIn
>>31
ファイルスコープにしたいなら無名名前空間を使えばいいでしょ。何か問題なの?

37 :デフォルトの名無しさん:2015/05/16(土) 10:01:17.43 ID:JcAP1h47
>>32
"std::bind オーバーロード"でググるとよろし

>>35
bind使ってるのは、
>>19のboost.orgのサンプルコードにbindが使われているからじゃろうて

ラムダ式使ったほうが、簡単だけど
auto fs = (&io)[]{ io.run(); };

38 :デフォルトの名無しさん:2015/05/16(土) 10:34:17.06 ID:l/o33AHz
ラムダ式の引数にもデフォルト値設定できるといいな

39 :デフォルトの名無しさん:2015/05/16(土) 10:36:53.61 ID:Z9l/gUlr
templateでenable_ifを使って型の種類で実行する同じ名前の関数を分けるとき
enable_ifで指定した型の種類を優先して
全ての種類の型がダメなら
実行する関数はどうやりますか?

40 :デフォルトの名無しさん:2015/05/16(土) 13:12:11.92 ID:D0MUvnf3
>>39
すべての条件がダメなときに有効になる関数を書けばいいのでは。
条件が複雑になるならクラステンプレートのstatic関数で実装して
クラステンプレートを部分特殊化するとか。

41 :デフォルトの名無しさん:2015/05/16(土) 16:47:48.86 ID:tglcZs5s
>>37
明示的に関数をキャストして特定しないといけないんですね、なるほど…
boostさんすごい

42 :デフォルトの名無しさん:2015/05/17(日) 07:58:37.11 ID:nHIEAaiT
関数仕様も読まずにアホな質問してくるゆとりにおまえら暇だな
言語仕様でそもそも出来ないものを
臭いものにフタをする場当たり的なboostの設計は害悪

43 :デフォルトの名無しさん:2015/05/17(日) 09:29:44.75 ID:OP9PfkoQ
仕様どこに書いてるかくらい書いておけば二度と質問されずに済むので是非書いておきましょう

44 :デフォルトの名無しさん:2015/05/17(日) 15:52:56.91 ID:T3ZW3uAx
自分の使ってる関数のリファレンスも読まない・読もうとしない人には無理

45 :デフォルトの名無しさん:2015/05/17(日) 18:59:54.82 ID:Vv8GOhge
boostはちょっと考えてみた新しいコードの実験場だもんよ
それがわざわざライブラリにするくらい使うかだの全体との整合性だのは考えないもの

46 :デフォルトの名無しさん:2015/05/18(月) 11:07:05.94 ID:iRc1W1Qi
class MyClass{
public:
  // メンバ変数、関数など
};

MyClass func(const MyClass &mc){
  auto mc_ret = mc;
  // ここで、いろんな処理
  return mc_ret;
}

void main(){
  MyClass mc;
  // ここで mc にいろいろ値などセットする

  MyClass mc = func(mc); // そのmcをfuncに渡す
}

みたいにfunc()を定義すると、mc_retが毎回作成されるので効率悪いのでしょうか?
funcの定義を

void func(MyClass &mc){
  // ここで、いろんな処理
}

とするほうが高速になりますか?
Visual Studio 2013です。

47 :デフォルトの名無しさん:2015/05/18(月) 11:11:00.80 ID:iRc1W1Qi
質問の意図は、ようするに、
 MyClass mc = func(mc);
のように、戻り値を返す関数形でfunc()を定義したいんです。

48 :デフォルトの名無しさん:2015/05/18(月) 13:29:47.75 ID:s8WFTGHh
MyClassに軽いムーブコンストラクタがあるなら

MyClass func(MyClass mc) { ... }
でいいんじゃないか?

49 :デフォルトの名無しさん:2015/05/18(月) 13:33:24.53 ID:s8WFTGHh
MyClass func(MyClass mc) { // mcは値渡し
// mcを色々処理
return mc;
}
ってことね
funcの呼び出し元の実引数が右辺値ならmcへの値渡しはムーブになると思うので軽い

50 :デフォルトの名無しさん:2015/05/18(月) 14:14:04.27 ID:iRc1W1Qi
>>49
レスありがとうございます。

> MyClass func(MyClass mc) { // mcは値渡し
>  // mcを色々処理
>  return mc;
> }
>ってことね

そうではなくて、
説明不足でしたが、以下のような状況を想定していました。

void main(){
  MyClass mc;
  // ここで mc にいろいろ値などセットする

  MyClass mc = func(mc); // そのmcをfuncに渡す

  // 戻ってきた mc をこの後、さらにいろいろ処理

   ...
   ...
}

このような状況で、アドバイスをよろしくお願いいたします。

51 :デフォルトの名無しさん:2015/05/18(月) 14:47:41.32 ID:7BvZDlvH
噛み合ってなくてワロス

52 :デフォルトの名無しさん:2015/05/18(月) 15:36:29.43 ID:hcu+yNsD
>>50
参照でいいんじゃね?

53 :デフォルトの名無しさん:2015/05/18(月) 15:39:38.77 ID:7BvZDlvH
>>52
auto mc_ret = mc;
中で↑するぐらいなら値渡しでいいだろ?

54 :デフォルトの名無しさん:2015/05/19(火) 01:44:54.64 ID:4XwXKHrp
中で何をやるのかよく分からないけど、
わざわざこの代入をする必要があるのかどうかという疑問はある

55 :デフォルトの名無しさん:2015/05/19(火) 02:03:45.06 ID:olC2rzju
>みたいにfunc()を定義すると、mc_retが毎回作成されるので効率悪いのでしょうか?
悪い
>とするほうが高速になりますか?
なる

本筋とはずれるけどmcを2回定義して怒られると思う、そのコード

56 :デフォルトの名無しさん:2015/05/19(火) 07:11:45.70 ID:cAl9a52g
テンプレートでもデータでもいいから
式ツリーを持たせたいんじゃね

57 :デフォルトの名無しさん:2015/05/19(火) 11:28:38.81 ID:qRFBYv8T
>>51-56
出来れば模範解答を教えてください。

58 :デフォルトの名無しさん:2015/05/19(火) 11:35:34.73 ID:nQ0racKO
>>57
おそらく>>48-49が解答

59 :デフォルトの名無しさん:2015/05/19(火) 17:52:25.56 ID:a+aajTcz
auto f()->decltype(auto);
delcltype(auto) f();
のどっちが正しいと思いますか?
初めのはdecltype(auto)自体が型という考え方です
二番目のはautoという推論方式をdecltypeという推論形式に
キャストしたという考え方です

60 :デフォルトの名無しさん:2015/05/19(火) 20:32:03.90 ID:qWpq1uxr
>二番目のはautoという推論方式をdecltypeという推論形式に
>キャストしたという考え方です

いえ全然違います
どちらも同じなので片方だけを正しいとすることはできません

61 :デフォルトの名無しさん:2015/05/23(土) 00:31:20.74 ID:CcTrUtiu
配列の中身だけでなく、元は何番目の要素だったかという情報も記憶するソート関数ってある?

例えば
a[]={9, 5, 7, 1, 3, 11}

{1, 3, 5, 7, 9, 11}
に並べ替えて、更に元の順番
{3, 4, 1, 2, 0, 5}
も適当な配列に記憶したい。
できるだけ速いアルゴリズムでソートしたい。

62 :デフォルトの名無しさん:2015/05/23(土) 00:37:33.18 ID:pR56aZiN
ソート前にインデックスも一緒に記憶しておけばいいだろ

63 :デフォルトの名無しさん:2015/05/23(土) 00:42:57.52 ID:+HPos4ru
ごく素直にやるとすれば
インデックスと値をセットにした構造体を作ってその構造体の値の比較と入れ替えでソートを実装する
ポインタを使う方法として
配列のアドレスが連続してることを仮定してポインタの配列を作る
比較はポインタ先の値で比較、ポインタの配列のソートを行う
元いたインデックスは(ポインタの値)-(頭のアドレス)で算出

64 :デフォルトの名無しさん:2015/05/23(土) 01:21:06.11 ID:KdzUXHQ9
うまくやろうとするとこんな感じになるのかな
http://mglab.blogspot.jp/2012/10/c2.html

65 :デフォルトの名無しさん:2015/05/23(土) 01:41:09.64 ID:4IsgGA8T
こんな感じでソートしたフリをする
http://ideone.com/cIlL0O

66 :デフォルトの名無しさん:2015/05/23(土) 04:06:00.01 ID:w/2IzZvC
ブロックソーティングでも探してるのか?

67 :デフォルトの名無しさん:2015/05/24(日) 01:22:20.61 ID:VdUAEjY5
>>61
longlong配列の下半分longに配列index、上半分にデータ値を合成格納
qsortでlonglongのままソート
各long値はマスクと右bitシフトで取得

68 :デフォルトの名無しさん:2015/05/24(日) 01:28:02.46 ID:utMlj4pJ
オマエの頭では世界のコンピュータのビット数は皆お前と同じなんだろうな

69 :デフォルトの名無しさん:2015/05/24(日) 02:46:18.58 ID:neLU6sWs
stdint使おう。(提案

70 :デフォルトの名無しさん:2015/05/24(日) 06:34:02.74 ID:ylcsIUCh
ブリッジパターンとpimplイディオムは何が違うのか教えてください

71 :デフォルトの名無しさん:2015/05/24(日) 06:50:20.06 ID:tybAC3nL
直交化と隠蔽という目的の違いがあるのではないですかね。

72 :デフォルトの名無しさん:2015/05/24(日) 09:27:44.19 ID:qM/+9wQU
pimplは実装隠蔽の為に実装を別の場所に置いて見えなくする
ブリッジパターンは構造を整理して主に拡張性を高めるためにクラスの一部を別のクラスに切り出す
切り出したクラスは隠蔽されている必要はない

73 :デフォルトの名無しさん:2015/05/24(日) 16:36:57.41 ID:rnyeMIqo
C#みたいにgetset出来ないんですか?

74 :デフォルトの名無しさん:2015/05/24(日) 16:46:32.24 ID:NKUCLBiW
つ C++Builder

75 :デフォルトの名無しさん:2015/05/24(日) 19:56:12.68 ID:83dput5b
.*や./のように新しい演算子を定義することは出来ませんか?

76 :デフォルトの名無しさん:2015/05/24(日) 20:18:05.93 ID:kYZMgSQu
マクロで似たような事はできるかも知れないが、おすすめしない

77 :デフォルトの名無しさん:2015/05/24(日) 21:16:25.87 ID:8riMzWGy
細かいことだけど「.*」は新しくない。既にある。
ただオーバーロードできない演算子なだけ

78 :デフォルトの名無しさん:2015/05/24(日) 23:45:59.91 ID:peEGidfs
プログラミング初心者です。
今授業でプログラミングを受けてるんですがそこで出た宿題が分かりません。ここで聞いてもいいですか?

79 :デフォルトの名無しさん:2015/05/24(日) 23:46:58.51 ID:N2dPAs5v
宿題スレがあるのでそっちへ

80 :デフォルトの名無しさん:2015/05/26(火) 17:44:01.72 ID:xRipshwS
ifってforの外に括れたら括った方が良いの?
最適化オプション-O3を付ける前提で頼む

81 :デフォルトの名無しさん:2015/05/26(火) 18:20:52.76 ID:TltR/tDH
>>80
その箇所が最適化するに値するならば、括り出せるなら括り出せ
そうでなければ読みやすい方を選べ

82 :デフォルトの名無しさん:2015/05/26(火) 18:34:27.24 ID:xRipshwS
>>81
ボトルネックになってる(一番沢山回る)forの中にある
括っても括らなくても体感変わらなかったんだよな

83 :デフォルトの名無しさん:2015/05/26(火) 18:53:35.30 ID:/rbKs22D
『最適化オプション-O3を付ける』
コンパイラ名も書かずに自分の使ってるコンパイラのオプションをいきなり書かれても

84 :デフォルトの名無しさん:2015/05/26(火) 19:21:48.98 ID:Wubd1VRv
-O3でコンパイラ名を連想できないやつの来るところじゃないのさ

85 :デフォルトの名無しさん:2015/05/26(火) 22:10:49.61 ID:oKlXT6AY
目的に依るとしか。
基本、読みやすくシンプルだと考えられる方にしておく。
パフォーマンスが気になるなら、まず実測。

86 :デフォルトの名無しさん:2015/05/26(火) 23:25:54.02 ID:PhNusCn9
実測してもあまり変わらなかったけれど読みやすさを妥協しても外に出すのが作法ですか
という質問ではなかったのか?
速くなったり外に出した方が読みやすくなるなら質問してないだろ

87 :デフォルトの名無しさん:2015/05/26(火) 23:39:06.46 ID:W+wx6WBJ
実測しても変わらないならもちろん可読性を犠牲にしてまで括りだすべきではないな
速度が同じで読みやすいコードと読みにくいコードがあったら前者がいいに決まってる
>>81>>85と同じこと言ってるだけだが

88 :デフォルトの名無しさん:2015/05/27(水) 00:48:10.82 ID:efoBkCvD
体感とかいってるんだから実測してるわけないだろ
そのそも体感程度が大事なレベルならループの中にifがあろうがどうでもいい

89 :デフォルトの名無しさん:2015/05/27(水) 13:10:55.65 ID:awqWe71L
実測だとAのほうが早いけど、体感だとBのほうが早い、
みたいじな状況が一番困るw

90 :デフォルトの名無しさん:2015/05/27(水) 13:25:01.03 ID:HNSUzXKJ
>>84
バージョンによって色々違うのは無視かよ w

91 :デフォルトの名無しさん:2015/05/27(水) 13:47:28.33 ID:iec71oBs
>>89
ヒトは自分の入れ込んだ方に無意識にバイアスかけるからね
だからこそ実測が重要

92 :デフォルトの名無しさん:2015/05/27(水) 13:52:00.12 ID:2yaRNWB+
>>91
話は全く違うけど、ジェネリック医薬品って治験が不要なんだよな
だから恐い
それに似てるかも
二重盲検法はジェネリック医薬品にも義務付けるといいな

ということで速度に関しても二重盲検法が必要だな

93 :デフォルトの名無しさん:2015/05/27(水) 14:07:25.21 ID:efS2f4FU
>>92
成分一緒なのになんで治験が必要なんだよ

94 :デフォルトの名無しさん:2015/05/27(水) 14:27:19.69 ID:lVf4UdZG
>>93
時間に関してはchrono使えばいいけど、「体感速度」を知りたいんだろ?

95 :89:2015/05/27(水) 17:49:44.06 ID:awqWe71L
>>91-92
確かにそういうバイアスとかもありそうだな。

96 :デフォルトの名無しさん:2015/05/27(水) 20:22:35.00 ID:/bdRBMF4
計測方法に問題があるならともかく、
実測値を見てもなお体感がどうのこうの言ってるようなアナログ人間に対する対処法はない

97 :デフォルトの名無しさん:2015/05/27(水) 21:13:31.25 ID:Cp39/RNE
>>93
検査に通した薬だけまともで
通った後は適当で品質にムラがある

勝手に製造工程を変えて
いつの間にか危険な成分が微量混入してる

など
その会社が信頼できるかどうかってのもある

98 :デフォルトの名無しさん:2015/05/27(水) 23:25:52.30 ID:qfInqOGF
検査を完璧に通った血液製剤でHIVもらった人もいたね

99 :デフォルトの名無しさん:2015/05/27(水) 23:58:09.18 ID:G+sQybRd
>>98
それはちょっと違うだろ。

検査したことにして出荷。
HIVの被害報告があったにもかかわらず握り潰し。

これは検査したことにならない。

100 :デフォルトの名無しさん:2015/05/28(木) 09:46:46.03 ID:aMLKyZHw
いや工場の出荷基準は誤魔化してないだろ
問題があったのは基準を作る過程のほうで

101 :デフォルトの名無しさん:2015/05/28(木) 16:07:56.51 ID:Ut1Jd9wY
プログレスバーを入れると処理速度は遅くなるけど
体感は早くなる、みたいな

102 :デフォルトの名無しさん:2015/05/28(木) 20:28:34.80 ID:+z3HE+1N
早くなるというよりフリーズしてませんよ的なアピールかな

103 :デフォルトの名無しさん:2015/05/28(木) 20:37:47.63 ID:CtCSkEBs
でも表示と演算の処理がそれぞれ独立しているせいで片方が止まっていても分かりづらいという

104 :デフォルトの名無しさん:2015/05/28(木) 20:49:08.17 ID:aMLKyZHw
だな
PC-9801のFORMATコマンドでなら、プログレスバーの精神的効果は大きかったが

105 :デフォルトの名無しさん:2015/05/28(木) 22:01:21.58 ID:ZMWTS8nv
>>104
わかんねぇよ

106 :デフォルトの名無しさん:2015/05/28(木) 22:14:53.93 ID:pwrXSWWR
>>105
分解して一つずつ考えるとわかるようになるよ。

107 :デフォルトの名無しさん:2015/05/28(木) 23:05:29.58 ID:CtCSkEBs
むしろPCの電源を切って分解すれば分かるようになるよ(適当)

108 :デフォルトの名無しさん:2015/05/28(木) 23:19:28.79 ID:+atrdthn
時間に比例してバーが増えてくれればいいんだけれども実際は
・バーの増えるペースがばらばら
・バーが100%に行ったと思ったらまた0%に戻りやがった

109 :デフォルトの名無しさん:2015/05/28(木) 23:32:43.25 ID:RoxPXtFV
C++では多次元の配列を表すのに
単に[][]のようにするやり方やarrayクラス,vectorクラスを用いるやり方がありますが
どの方法が一般的でしょうか

110 :デフォルトの名無しさん:2015/05/28(木) 23:39:20.23 ID:JOXP+yGi
それぞれの動作の違いがわかれば一般的などないということが分かるはず

111 :デフォルトの名無しさん:2015/05/29(金) 01:04:50.18 ID:xgUlcQoU
諸事情でC++11が使えないのですが
enumをenum classみたいにスコープを持たせる方法はありますか?

112 :デフォルトの名無しさん:2015/05/29(金) 01:12:06.16 ID:mKqwnZNf
>>111 struct Enum { enum E { ... } e; }; とか https://github.com/flaub/boost-enum とか。

113 :デフォルトの名無しさん:2015/05/29(金) 01:22:09.32 ID:ru3QOXEM
適当な名前空間に放り込んどけばいいんじゃ

114 :デフォルトの名無しさん:2015/05/29(金) 03:32:41.80 ID:xgUlcQoU
>>113
ありがとうございます
名前空間に突っ込んでとりあえずしのぎました

115 :デフォルトの名無しさん:2015/05/31(日) 11:15:14.18 ID:OIN9Nn99
クラステンプレートのinline関数のinlineは
クラスの定義と宣言を分けて書く場合
どちらの前に掛けばよろしいですか?
我々は宣言の前にしかかいてないどすけど

116 :デフォルトの名無しさん:2015/05/31(日) 11:15:43.44 ID:OIN9Nn99
クラステンプレートのinline関数のinlineは
関数の定義と宣言を分けて書く場合
どちらの前に掛けばよろしいですか?
我々は宣言の前にしかかいてないどすけど

117 :デフォルトの名無しさん:2015/05/31(日) 11:43:44.83 ID:SZ/HavyK
テンプレートなら書かなくてもいい

118 :デフォルトの名無しさん:2015/05/31(日) 13:12:51.15 ID:aaI4+yOw
テンプレートなら今はコンパイラさんにお任せするほうがいい。

119 :デフォルトの名無しさん:2015/05/31(日) 13:54:40.18 ID:1lTJ4ips
>>96
見た目は重要だよ
そこを理解しないと成長はない

120 :デフォルトの名無しさん:2015/05/31(日) 13:58:40.94 ID:9ldLUKuR
体感速度ほどプラセボ効果を受ける物はないよな
これは二重盲検法によるしか他にない

121 :デフォルトの名無しさん:2015/05/31(日) 14:04:55.73 ID:OIN9Nn99
テンプレートのクラスの中に定義を書くなら
書かなくていいんだにょ
そとならどこに書くのか聞いているのだにょ

122 :デフォルトの名無しさん:2015/05/31(日) 14:09:01.85 ID:OIN9Nn99
>>118
エフェクティブC++にはインラインの最適化は
大抵のコンパイラはしないとかいてあるにょ

123 :デフォルトの名無しさん:2015/05/31(日) 14:10:09.33 ID:SZ/HavyK
内だろうが外だろうが関係ない
テンプレートなら書かなくていいと書いただろう

124 :デフォルトの名無しさん:2015/05/31(日) 14:15:53.61 ID:OIN9Nn99
「非明示的な方法とは、関数の定義をクラス定義の中に書くことです。」
とエフェクチブに書いてあるにょ

125 :デフォルトの名無しさん:2015/05/31(日) 14:29:41.03 ID:brHWK6fJ
>>124
君はさっきから誰と会話してるんだ
糖質なのか

126 :デフォルトの名無しさん:2015/05/31(日) 21:30:56.61 ID:aHKj8Hug
> 大抵のコンパイラはしない

目の前のコンパイラが「した」ら、全力で喚いても空疎な都市伝説だ

127 :デフォルトの名無しさん:2015/05/31(日) 21:36:44.51 ID:ywCtFlc+
ほとんどコンパイラさんのO2に任せてるなー。
レジスターと同じ位置になりつつあるような。

128 :デフォルトの名無しさん:2015/05/31(日) 23:08:10.91 ID:/p4405A5
std::vector<int> values[2];という配列があるときに、要素[0]のstd::vector<int>にアクセスするにはどうすれば良いの?
(values)[0]で良いの?もっと誤解の余地の無い書き方があったりする?

129 :デフォルトの名無しさん:2015/05/31(日) 23:17:35.16 ID:3aA7gIkH
()は要らんよ

130 :デフォルトの名無しさん:2015/05/31(日) 23:18:26.31 ID:UJODE2jh
values[0]
(values)[0]
values.at(0)
values.data()[0]

好きなのを選べ

131 :デフォルトの名無しさん:2015/05/31(日) 23:19:25.64 ID:UJODE2jh
間違えた。忘れて
values[0] でどうぞ

132 :デフォルトの名無しさん:2015/05/31(日) 23:19:50.14 ID:p3LxTYA2
typedef std::vector<int> int_vector;
int_vector values[2];

133 :デフォルトの名無しさん:2015/05/31(日) 23:24:53.87 ID:ywCtFlc+
std::vector<int> vec[2];
vec[0].size();
とかか。

134 :デフォルトの名無しさん:2015/05/31(日) 23:31:18.69 ID:/p4405A5
>>130
ちょっvalues[0]だとvector.operator[](0)の意味になってしまうみたいなんですが@VS2010

135 :デフォルトの名無しさん:2015/05/31(日) 23:32:19.25 ID:/p4405A5
スマン
誤: vector.operator[](0)
正: values.operator[](0)

136 :デフォルトの名無しさん:2015/05/31(日) 23:33:45.15 ID:/p4405A5
ていうかやっぱtypedefか、、orz

137 :デフォルトの名無しさん:2015/05/31(日) 23:37:48.53 ID:zG1uK5fD
>>134
そんなことあり得ないから見直せ

138 :デフォルトの名無しさん:2015/06/01(月) 05:30:13.06 ID:tfESOXWQ
最適化でinlineを要請しないでも最適化でinline化されるってあり得ないと思うんだけど
もしライブラリーがバージョンアップしてクライアントのコードを再コンパイルしてほしくないときとか
ファイルサイズを小さくしたいときには方法がなくなる

139 :デフォルトの名無しさん:2015/06/01(月) 06:03:18.34 ID:0D/a6Ypk
>>138
ライブラリのバージョンアップうんぬんの話はやめたほうがいい
デフォルト引数の問題もあるしな
せめてCOMにするとか
ファイルサイズを小さくはコンパイルオプションで指定できたりするだろ

140 :デフォルトの名無しさん:2015/06/01(月) 06:16:57.51 ID:2kRRaIOr
デフォルト引数は呼び出す方が解決するんじゃないの。

141 :デフォルトの名無しさん:2015/06/01(月) 06:20:58.83 ID:6q6QceQb
だから問題があるって言ったんだろう

142 :デフォルトの名無しさん:2015/06/01(月) 22:00:46.46 ID:XaM+yT8O
>>121
template<typename T>
struct baka {
 auto f();
};

template<typename T>
inline auto baka<T>::f() {
}

143 :デフォルトの名無しさん:2015/06/01(月) 22:34:29.55 ID:CikCK20O
>>142
何でこう言う場合にstructをこんな風に使うのか違和感有るのだが、おみゃ~らそう思わない?
structはstructらしく使ってやれよ。

144 :デフォルトの名無しさん:2015/06/01(月) 22:47:39.87 ID:Jkg/EUtZ
名古屋人は味噌食って寝ろ

145 :デフォルトの名無しさん:2015/06/02(火) 20:08:16.05 ID:3B1g3coL
おいQZむしゃくしゃしたからって他スレで人種差別かよ
やっぱり能力では勝てないらしいな、お前チョンかよ

146 :デフォルトの名無しさん:2015/06/02(火) 20:16:04.94 ID:w3C6933l
こんな用途にいちいちclassとpublicなんて面倒くさすぎることをするやつは
乳臭い教条主義者だ

147 :デフォルトの名無しさん:2015/06/02(火) 20:27:39.68 ID:L4AHebUZ
struct の清々しさがわからんのだろう

148 :デフォルトの名無しさん:2015/06/02(火) 21:44:09.21 ID:/ZxOVfRF
>>143
お前の考える「structらしさ」が普遍的なものだと
いつから錯覚していた?

149 :デフォルトの名無しさん:2015/06/04(木) 06:15:53.73 ID:wgsK5iWT
構造体らしさってなんだろう(哲学)

150 :デフォルトの名無しさん:2015/06/04(木) 07:20:55.19 ID:YIi7L05j
PODらしくってことかなーって勝手に思ってる

151 :デフォルトの名無しさん:2015/06/04(木) 07:55:00.68 ID:nEC7XTfr
classでもPODにできるでしょ

152 :Office & Gamers ◆G144Hzgh2.0e :2015/06/04(木) 08:42:28.57 ID:KXOiaqA7
DarkBASICド安定時代。(アハ

153 :デフォルトの名無しさん:2015/06/04(木) 20:42:48.48 ID:0hMux0Wj
トリビアルでスタンダードレイアウトがstructらしさ
異論は認める

154 :デフォルトの名無しさん:2015/06/05(金) 08:18:45.87 ID:+LcgUZZs
BCCでluaの組み込みをやってみたいのですが
うまくできません。
たばささんや微妙なチラシの裏さん以外で
詳しく説明しているサイトとかないでしょうか?

155 :デフォルトの名無しさん:2015/06/05(金) 08:47:39.17 ID:ALlGmVmR
ここにエラー内容書いてくれれば多分解決できる人いるよ
老婆心ながら、BCC55は古すぎる上にバグも放置してるので、
骨董趣味や道楽でないなら、vcかgccかclang使った方がいい

156 :デフォルトの名無しさん:2015/06/05(金) 12:24:02.94 ID:+LcgUZZs
>>155
BCCとluaでぐぐってもなかなか出てこないと思ったら、
やはり、古すぎたんですね・・・
とりあえず、コンパイラを乗り換えてみます。
現状、趣味レベルでちまちまやっている程度なので、
フリー&DXlライブラリが使えるのが前提です。

素直にMicrosoft Visual C++ 2010 Expressに乗り換えた方がよいですか?
あと、やろうとしていることはC++でグラフィックなどの処理をして
外部ファイルにスクリプトを置こうとしています。

それで、luaを選んだのですが、
他のお勧め等ありますか?(扱いやすい、ネットに資料が多いなど)
よろしくお願いします。

157 :デフォルトの名無しさん:2015/06/05(金) 12:45:54.56 ID:WHej8Fm1
>>156
> 素直にMicrosoft Visual C++ 2010 Expressに乗り換えた方がよいですか?
なんでわざわざ五年前のバージョンにする?
趣味なら 2013 Community にしとけば製品版と同等のものがただで使えるよ

158 :デフォルトの名無しさん:2015/06/05(金) 13:21:53.41 ID:s0fTOumn
せやな
ズブズブの素人なら手とり足とり情報が得られる2010もいいと思うけどそうでもなさそうだし

159 :デフォルトの名無しさん:2015/06/05(金) 14:41:18.35 ID:ALlGmVmR
>>156
俺もVCの最新版で良いと思う
ただ話を聞く限りCocos-2djs(JavaScript)を
自分で拡張すれば解決しそうかなと思った

学習目的ならDXライブラリもいいと思うけど

160 :デフォルトの名無しさん:2015/06/05(金) 17:07:02.56 ID:XWMVeRSq
BCC は property 使えるからな
アレはアレで結構便利だったりする

161 :Office & Gamers ◆G144Hzgh2.0e :2015/06/05(金) 18:24:29.39 ID:0rFWZSHL
>>156
LUAならEGSL使ってみたら?w

162 :デフォルトの名無しさん:2015/06/05(金) 22:53:06.52 ID:zxpRKu14
>>160
ただそれに慣れちゃうと、BCC 使えなくなった時に困っちゃうけどな

163 :デフォルトの名無しさん:2015/06/06(土) 00:04:06.59 ID:M49TyJvh
>>162
おいQZ思い付きの知識で知ったかぶりしなくてもいいぞ糞コードオナニスト
お前ム板にはいらないから初心者すぎて

164 :デフォルトの名無しさん:2015/06/06(土) 00:54:29.61 ID:DXSt7rl7
stlってなんのためにあるんですか?
遅いし、ソース見たら、単に頭から舐めてってるだけw

だったらforで回してifで判定breakでよくね?

165 :デフォルトの名無しさん:2015/06/06(土) 01:14:14.55 ID:htxI56Um
今時そのネタじゃ釣れないよ
もっと凝った話考えなさい

166 :デフォルトの名無しさん:2015/06/06(土) 01:49:05.91 ID:DXSt7rl7
釣れてんじゃんw

167 :デフォルトの名無しさん:2015/06/06(土) 01:52:36.03 ID:xG9JuOZV
>>165
やーい釣られてやんの(´・ω・`)

168 :デフォルトの名無しさん:2015/06/06(土) 02:03:24.83 ID:htxI56Um
わーつられたわー
かおまっかではずかしくてすれにかきこめないわー

169 :デフォルトの名無しさん:2015/06/06(土) 02:49:49.32 ID:I1GKmVH6
お前ら…

170 :Office & Gamers ◆G144Hzgh2.0e :2015/06/06(土) 07:17:55.14 ID:KNDA5L3m
DarkBASICド安定時代。(アハ

171 :デフォルトの名無しさん:2015/06/06(土) 08:31:58.78 ID:pxbafvNu
>>163
誰だ、お前?
なんでもかんでも噛みつくんじゃねーよ、ボケ

172 :デフォルトの名無しさん:2015/06/06(土) 11:41:34.00 ID:M49TyJvh
他スレで人格変えてもバレバレ
糞コードでまるわかりだから

173 :デフォルトの名無しさん:2015/06/06(土) 14:02:39.15 ID:BYjl+Dps
コードなんて書いてないのに、基地害かよ

174 :デフォルトの名無しさん:2015/06/06(土) 14:04:43.55 ID:DXSt7rl7
韓国人はシカト

175 :デフォルトの名無しさん:2015/06/06(土) 20:12:59.40 ID:L6nmMZYK
もまいら楽しそうだな

176 :154:2015/06/06(土) 23:26:15.66 ID:CA44w+If
結局、2013Communityが日本語化できなかったので
Microsoft Visual C++ 2010 Expressにしました。
しばらくいじくり倒してみるつもりです
ありがとうございました。

177 :デフォルトの名無しさん:2015/06/07(日) 00:14:41.16 ID:LQ5JyIyr
Visual Studio 2013 Expessという選択肢を取らずに
2010を使う人をよく見かけるのは何故なんだぜ
それにCommunityで普通に日本語表示出来てるけどインスコに失敗してるんじゃね

178 :デフォルトの名無しさん:2015/06/07(日) 00:51:36.39 ID:BoulMLQ9
>>176
2013の日本語版をダウンロードするにはコツがいるからな

http://peace.2ch.net/test/read.cgi/tech/1423697825/471

179 :デフォルトの名無しさん:2015/06/07(日) 01:23:43.86 ID:hr3tQ2QJ
自演で質問しながらVSをつかえてない情弱っぷりをさらしてしまったQZ
お前のアフォすぎる質問には誰も答えてやれない

180 :デフォルトの名無しさん:2015/06/07(日) 02:41:33.01 ID:84d1r1J4
プログラミング言語C++4版に
void inval()
{
for (char c; cin >> c; )
cout << "the value of '" << c << "' is" << int{c} << '\n';
}
というコードがありますint{c}はおかしいですよね?
関数スタイルキャストならint(c)のはずですが
本が間違っているんでしょうか?ビャーネ・ストロヴストルップが書いたのに残念

181 :デフォルトの名無しさん:2015/06/07(日) 02:51:07.63 ID:STg1TmP/
>>180
人の事を残念とか言う前に基本的なこと勉強したら?
残念なのは自分自身だって分かるから

182 :デフォルトの名無しさん:2015/06/07(日) 02:52:17.94 ID:j9o61IWP
キャストではない

183 :デフォルトの名無しさん:2015/06/07(日) 03:03:00.45 ID:tXAtulCB
>>177
利用規約に不安があるとかかね
http://www.buildinsider.net/hub/insidersbreak/2014112101

個人的には msys2使えばいいや と思ってしまうけど

>>180
bracketed initializerなのでは? …と書こうとしたら速攻でレスついてたw

184 :デフォルトの名無しさん:2015/06/07(日) 03:04:45.47 ID:j9o61IWP
キャストだったわw

185 :デフォルトの名無しさん:2015/06/07(日) 03:23:54.25 ID:hr3tQ2QJ
QZ焦りにあせって自演を加速中

186 :デフォルトの名無しさん:2015/06/07(日) 03:33:18.57 ID:BED/WPPF
>>180
彼は単にC++の規格を定めただけ
別にC++を手足のように自由に操れるわけでないからな

187 :デフォルトの名無しさん:2015/06/07(日) 03:44:46.53 ID:84d1r1J4
あ、すみませんIDEのコンパイラの設定ミスでした

188 :デフォルトの名無しさん:2015/06/07(日) 06:05:57.06 ID:KXsmmvIH
禿の本は昔から規格とずれた妄想が
所々紛れている。マジ迷惑

189 :デフォルトの名無しさん:2015/06/07(日) 06:10:00.31 ID:5YDX2Prx
単にintをcで初期化したものを返しているようだな

190 :デフォルトの名無しさん:2015/06/07(日) 06:16:22.73 ID:5YDX2Prx
クラスも class1{} で括るとコンストラクタの前処理にゼロ初期化されるみたいだな

191 :デフォルトの名無しさん:2015/06/07(日) 06:20:09.47 ID:5YDX2Prx
昔は構造体の初期化めんどいから ={0} でよく自動初期化に多様してたけど

192 :デフォルトの名無しさん:2015/06/07(日) 06:36:58.07 ID:TeZl9gIM
>関数スタイルキャスト
>bracketed initializer
そんなものはC++には無い

>ゼロ初期化
んなこたーない

>昔は構造体の初期化めんどいから ={0}
昔すぎるだろ規格策定前だぞ

193 :デフォルトの名無しさん:2015/06/07(日) 12:24:40.56 ID:khofDikv
>>192
釣り針何個銜えてんだか…

194 :デフォルトの名無しさん:2015/06/07(日) 12:26:58.95 ID:p498mNnq
>>188
その妄想を楽しむ変態のための本だよ。
いやなら読むな。

それとint{c}を妄想とかぬかしてるんなら死ねいっぺん。

195 :デフォルトの名無しさん:2015/06/07(日) 12:40:13.95 ID:STg1TmP/
>>190
A a{};

A a = A();
と同じことの別表現でデフォルト初期化ってだけだろ、その結果PODはゼロ初期化される

196 :デフォルトの名無しさん:2015/06/07(日) 13:15:56.44 ID:hr3tQ2QJ
おいQZ自分のミスをごまかすなよ

197 :デフォルトの名無しさん:2015/06/07(日) 13:20:25.85 ID:T1M3nbRS
>A a = A();と同じ

全然同じじゃないぞ
それとクラスをPODにすり替えちゃダメ

198 :デフォルトの名無しさん:2015/06/07(日) 13:24:34.81 ID:STg1TmP/
>>197
どう違うの?
それとクラスをPODにすり替って何言ってるのか分からない

199 :デフォルトの名無しさん:2015/06/07(日) 13:30:14.82 ID:khofDikv
>>195ってメンバ変数のPODって話だよね?

200 :デフォルトの名無しさん:2015/06/07(日) 13:35:03.25 ID:hr3tQ2QJ
QZ低レベルな質問でスレを乱す

201 :デフォルトの名無しさん:2015/06/07(日) 13:35:17.72 ID:STg1TmP/
>>197
書き方悪かったかも知れないけど俺が言ってるのはこれだけだよ

#include <iostream>
using namespace std;
struct AA
{
int v;
AA() : v(1) {}
};

struct A
{
int v1; // PODメンバ
AA v2; // 非PODメンバ
};

int main()
{
A a1; // AのPODメンバは初期化されない
A a2 = A(); // デフォルト初期化でAのPODメンバは0初期化される
A a3{}; // 上と同じ
cout << a1.v1 << endl;
cout << a2.v1 << endl;
cout << a3.v1 << endl;
}

202 :デフォルトの名無しさん:2015/06/07(日) 13:54:37.28 ID:5YDX2Prx
A() はただのデフォコン呼び出しじゃないのか?

203 :デフォルトの名無しさん:2015/06/07(日) 13:57:10.66 ID:5YDX2Prx
この方法でもゼロ初期化されるのか
知らなかった

204 :デフォルトの名無しさん:2015/06/07(日) 14:04:14.45 ID:CaaEdIwG
>>198
下はコピーが行われるでしょ
http://ideone.com/mj5HNh

205 :デフォルトの名無しさん:2015/06/07(日) 14:04:47.41 ID:CaaEdIwG
間違えたコピーじゃなくてムーブ

206 :デフォルトの名無しさん:2015/06/07(日) 15:52:59.31 ID:Co/z1hlC
構造体がC++11で無くなったのに規格の1.7に
structureという単語が一カ所残っているのは誤記ですか?

207 :デフォルトの名無しさん:2015/06/07(日) 15:58:48.50 ID:uZ5MlZ27
構造体なくなるのん?選択肢が減る方向での修正は改悪だよね?(´・ω・`)

208 :デフォルトの名無しさん:2015/06/07(日) 16:36:11.65 ID:mQnOWg31
>>207
もともとISO/IEC 14882:1998では「structで定義されたものは全て構造体」だった。
用語を不適切な定義にしてしまったので廃止して「POD」に一本化しただけ

209 :デフォルトの名無しさん:2015/06/07(日) 17:18:24.59 ID:22HQriIr
CStringを間違って画像検索したら、
鯖缶が上司にチクって、ボーナスの査定を下げられそうです。
どうしたらよいでしょうか?

210 :デフォルトの名無しさん:2015/06/07(日) 17:22:54.94 ID:FHoyYiwS
くっそわろたwwwwwwww
なんだこれw

211 :デフォルトの名無しさん:2015/06/07(日) 17:32:24.92 ID:chj3jLUM
>>209
なんじゃこりゃ w


ググってみたら、Tバックの進化形でIバック(c-string)って言うらしい

212 :デフォルトの名無しさん:2015/06/07(日) 18:00:51.85 ID:BED/WPPF
構造体なんて使うことある?
使ったときねーよ
使い道が分からない

unionは素晴らしいアイデアだとは思うが、structってどんなとき使うのか?

213 :デフォルトの名無しさん:2015/06/07(日) 18:04:49.20 ID:uZ5MlZ27
構造体を使ったことがないとすると、全くプログラミングをしたことがないとしか
判断できないけど…それで合ってる?(´・ω・`)

214 :デフォルトの名無しさん:2015/06/07(日) 18:07:24.34 ID:BED/WPPF
どの程度をプログラミングをしたことがあるっていうのか分からんが・・・
structなんてpublic以外どうちがうのだ?

215 :デフォルトの名無しさん:2015/06/07(日) 18:11:50.93 ID:uZ5MlZ27
いや、程度とか関係なく「全くプログラミングをしたことがない」判定だよ?(´・ω・`)
つまり、脳内プログラマだね?(´・ω・`)

216 :デフォルトの名無しさん:2015/06/07(日) 18:42:46.35 ID:3axT0xFW
お前の構造体の脳内定義を基準に語られても

217 :デフォルトの名無しさん:2015/06/07(日) 18:43:15.04 ID:n+8DumoW
>>212
Cと互換性を取りたい場合に必要。

と、簡易的な記述でファンクタ定義する時によく使う。
これは、全てpublicって事の、具体的な利点ね。
C++11以降なら、ラムダが使えるけど、まだまだ普及してるとは言いがたい。

218 :デフォルトの名無しさん:2015/06/07(日) 19:32:54.69 ID:BED/WPPF
>>215
全くプログラミングをしたことがないです。
class Foo
{
//イロイロ
public:
//イロイロ
protected:
//イロイロ
};

structFoo
{
//イロイロ
protected:
//イロイロ
private:
//イロイロ
};
はどう違いますか?

219 :デフォルトの名無しさん:2015/06/07(日) 19:45:15.16 ID:khofDikv
>>218
上=コンパイル可能/下=コンパイルエラー

220 :デフォルトの名無しさん:2015/06/07(日) 20:26:47.44 ID:BED/WPPF
ふ~んw

221 :デフォルトの名無しさん:2015/06/07(日) 20:28:17.15 ID:xCcw73lL
struct Foo と structFoo ではそりゃ違うわなwww

222 :デフォルトの名無しさん:2015/06/07(日) 21:01:04.77 ID:STg1TmP/
private/protectedなメンバ/継承を微塵も必要としてないのに
classにするのはバカというもの

223 :デフォルトの名無しさん:2015/06/07(日) 21:05:02.96 ID:mQnOWg31
むしろ全部パブリックだからと言って
virtualデストラクターを持つクラスをstructで書かれたら白昼の殺意ですよ。

224 :デフォルトの名無しさん:2015/06/07(日) 21:06:38.48 ID:STg1TmP/
勝手に発狂してくれ

225 :デフォルトの名無しさん:2015/06/07(日) 21:08:35.68 ID:o/S/phAP
そこで #define private publicですよ

これが広まったもんだからPimplイディオムなんか出てきやがった

226 :デフォルトの名無しさん:2015/06/07(日) 21:14:20.03 ID:BED/WPPF
Pimplイディオムw

227 :デフォルトの名無しさん:2015/06/07(日) 21:15:56.49 ID:JMn1UBdA
お前らいつまで>>164にかまってるんだ
最初の書き込みで釣りだって分かるだろうに

228 :デフォルトの名無しさん:2015/06/07(日) 21:32:09.95 ID:pVeX9VDC
>>164は荒らしの常習犯Q
>>213は別人

229 :デフォルトの名無しさん:2015/06/07(日) 21:32:58.36 ID:uZ5MlZ27
ここまでの流れをみて「もしかしたら、そうなんじゃないかな?」が
こりゃ絶対にプログラミングのプの字もしてない、プログラマに憧れ
てるだけの中学二年生という確信に変わったよ?(´・ω・`)

230 :デフォルトの名無しさん:2015/06/07(日) 21:35:48.47 ID:QyduMdOG
>>223
bulletでそんなのがあったなw

231 :デフォルトの名無しさん:2015/06/07(日) 22:50:34.22 ID:hr3tQ2QJ
QZは糞知識を自慢しながらスレを荒らす基地外人格障害野郎
ム板から消えろよ

232 :デフォルトの名無しさん:2015/06/08(月) 17:57:54.82 ID:dWqRejTW
俺もうめんどくさいから全部structでpimplだぞ
C++もそろそろ贅肉を削ぎ落とす時期に来てると思う

233 :デフォルトの名無しさん:2015/06/08(月) 18:46:36.39 ID:tBnOztNz
最近com interfaceをc形式のstructで使ってるわ。こっちの方が色々できて便利

234 :デフォルトの名無しさん:2015/06/08(月) 19:00:48.94 ID:ZLZCLNE0
protected とか private とか const とか export とか、もうどーでもいいよね

235 :デフォルトの名無しさん:2015/06/08(月) 19:39:24.66 ID:R+3hraPW
C++17のexportには期待してる
一度失敗したテンプレートの様にならなければよいけど

236 :デフォルトの名無しさん:2015/06/08(月) 19:40:21.78 ID:6B1qdYYr
いい加減コンセプトさん入るよな

237 :デフォルトの名無しさん:2015/06/08(月) 19:43:23.01 ID:+srQZVdu
ピンプルパンプルパムポップン☆
みんな馬鹿にな~れ☆

238 :デフォルトの名無しさん:2015/06/08(月) 19:59:55.24 ID:BYDNcOl5
QZだけがくらったよ

239 :デフォルトの名無しさん:2015/06/08(月) 21:58:54.13 ID:fElrENSd
むしろ逆
QZだけ何故か効かなかった

240 :デフォルトの名無しさん:2015/06/08(月) 22:04:05.18 ID:M37yntq0
QZは>>237を喰らわなくても最初から馬鹿だからな

241 :デフォルトの名無しさん:2015/06/09(火) 05:42:10.50 ID:pKjzH8Oa
>>232
贅肉落とし、俺もそう思う
ゼロオーバーヘッドに全く従っていない例外あたり大なた振るって欲しい

242 :デフォルトの名無しさん:2015/06/09(火) 07:09:50.32 ID:6L0GmvTV
いや従ってるだろ
ただ標準ライブラリの殆どがnoexceptでないから
嫌なら使うな状態なだけ

243 :デフォルトの名無しさん:2015/06/09(火) 07:35:05.37 ID:qEGt13BM
sjljとかのことを言ってるのでは

244 :デフォルトの名無しさん:2015/06/09(火) 08:18:39.00 ID:3PdUfKat
>>241
例外のオーバーヘッドって、何見て言ってんの?
実行時間?使用メモリ?プログラムサイズ?
まさか実測せずに言ってるんじゃないよね?

245 :デフォルトの名無しさん:2015/06/09(火) 12:45:04.16 ID:xfiXeUeQ
QZがオナニー時間も計測してるの?

246 :デフォルトの名無しさん:2015/06/09(火) 19:56:02.44 ID:kuSlMpf7
>>244
機械語

247 :デフォルトの名無しさん:2015/06/09(火) 22:13:49.03 ID:8RlyjR44
愛してるよベルくん

248 :247:2015/06/09(火) 22:14:42.44 ID:8RlyjR44
誤爆orz

249 :デフォルトの名無しさん:2015/06/09(火) 22:25:29.00 ID:zb9c9H/a
sourceforgeのソースを見てるとtemplateを使って
if(...)
 sort<ASC>(...);
else
 sort<DSC>(...);

感じを見かけるけど、これって
sort((...)?ASC:DSC...);
じゃ駄目なの?

メリットが全くわからん。特に複数で開発してる場合
全員がModernC++Designを熟読してるとは限らないし。

250 :デフォルトの名無しさん:2015/06/10(水) 01:39:20.08 ID:12MV2dD5
例外機構のパホーマンス。
http://zakkas783.tumblr.com/post/3870295160/c

見たことは無いがsetjump()/longjump()と同じしくみで実装された軽量なやつがあるっぽい

251 :デフォルトの名無しさん:2015/06/10(水) 01:51:10.50 ID:+qvMu2kY
>>249
ぼかぁreverse_iteratorが好きだなあ(異端)

252 :デフォルトの名無しさん:2015/06/10(水) 01:57:22.18 ID:7znYU1gJ
いい加減な知識でwebに公開してる人ってなにが目的なんだろう

253 :デフォルトの名無しさん:2015/06/10(水) 09:48:41.78 ID:6q5iIrJO
>>249
条件演算子使うと見にくいことが多いし

254 :デフォルトの名無しさん:2015/06/10(水) 10:02:52.16 ID:u4dkkrWy
>>249
そこだけ切られてもだれにもわからんと思うけど、少なくとも
Modern~の熟読が要るようなコードには思えない。
テンプレート引数によって大きくアルゴリズムが変わるような
ことがあるなら最適化しやすくなるというメリットはあるかもしれないし、
実測もせずにそういうつもりで書いてるだけの濫用かもしれない。

255 :デフォルトの名無しさん:2015/06/10(水) 10:22:25.70 ID:T2GCSAWw
>>249
条件演算子の式にブレークポイントを仕掛けたいとき
いちいち逆アセンブリ見なきゃいけないから面倒臭い。

256 :デフォルトの名無しさん:2015/06/10(水) 10:44:31.83 ID:7znYU1gJ
>>254
実測?
なにをいってるのかしらんw

257 :デフォルトの名無しさん:2015/06/10(水) 10:47:31.17 ID:+qvMu2kY
ブレークポイントを仕掛けたいがために
ことごとく三項演算子を排除するコードがたまにあって、すごく嫌い。

258 :デフォルトの名無しさん:2015/06/10(水) 10:53:17.24 ID:vGBRRQny
三項演算子はよくつかうが、>>249みたいな使い方は見難くなるから使わないな

259 :デフォルトの名無しさん:2015/06/10(水) 11:23:04.53 ID:7znYU1gJ
sort(...)
{
if(ASC) sortAsc(...);
else if(DSC) sortDsc(...);
}

260 :デフォルトの名無しさん:2015/06/10(水) 13:02:49.11 ID:beTkHSe3
そもそも>>249って上のASC/DSCは型だけど下のASC/DSCは変数?になるから全然違う話にならない?

261 :デフォルトの名無しさん:2015/06/10(水) 14:45:56.32 ID:+qvMu2kY
>>249の下は比較関数のポインタかなんかかな
関数オブジェクトじゃなさそうだし。

262 :デフォルトの名無しさん:2015/06/10(水) 19:16:56.43 ID:TuDQefqe
>sort<ASC>(...);

ASCが型だと、いつから>>260は錯覚していた?

263 :デフォルトの名無しさん:2015/06/10(水) 19:29:12.42 ID:96RlC2BQ
>>249
異なる箇所は特殊化してそれぞれ展開するのがテンプートの流儀。
sortの中で実行時の比較をしなくてよくなる。

264 :デフォルトの名無しさん:2015/06/10(水) 19:45:14.51 ID:tmzsh7HN
template<typename T>
auto fack(T t)
{
if(is_xxx<T>::value)
 ☆1;
else
 ☆2;
}

この場合☆1と☆2で関数を分けないとコンパイルが通らないケースが存在する
特殊化で分けておけばこの問題は起こらない

265 :デフォルトの名無しさん:2015/06/10(水) 20:03:13.78 ID:FbxdAClX
>>262
オペレーター レスザン オーバーロード
"書きすさべ ちいさし手遣い"・・・だと・・・・!?

266 :デフォルトの名無しさん:2015/06/10(水) 22:28:57.79 ID:7znYU1gJ
>>263
けど、そのsortを使う側はいちいちif,elseしなきゃいけないじゃん

if(...)
 sort<ASC>(...);
else
 sort<DSC>(...);

267 :デフォルトの名無しさん:2015/06/10(水) 22:37:33.43 ID:a95Aoj+1
流儀かどうかはともかく、結局保守性や柔軟性を重視するなら分けるしかないだろうな

268 :デフォルトの名無しさん:2015/06/10(水) 22:37:35.21 ID:BkPVzAE7
それは>>249を読んだ上で物申してるのかね

269 :デフォルトの名無しさん:2015/06/10(水) 22:49:09.81 ID:ZEd69p52
>>250
sjljの方が重いのだが。

270 :デフォルトの名無しさん:2015/06/11(木) 00:43:43.04 ID:bpCl5S99
引数に三項演算子渡すとか頭おかしいやろ

271 :デフォルトの名無しさん:2015/06/11(木) 00:48:10.10 ID:q/LkR2I6
引数に三項演算子渡すってw

272 :デフォルトの名無しさん:2015/06/11(木) 00:54:19.11 ID:ESr81XRP
引数に三項演算子ってどうやれば渡せるんだろう

273 :デフォルトの名無しさん:2015/06/11(木) 01:37:29.82 ID:DfiUpDPN
>>249
質問の意図が良くわからないんだけど、そのif文も中に入れたソート関数を提供してくれってこと?
ラッパー作ればいいだけなんじゃ…

274 :デフォルトの名無しさん:2015/06/11(木) 02:18:29.16 ID:UJe8acGw
三項演算子 is 遅い

275 :デフォルトの名無しさん:2015/06/11(木) 02:39:00.33 ID:+CTai5Iv
三項演算子といっても中でやってることは条件ジャンプと同じだからな

276 :デフォルトの名無しさん:2015/06/11(木) 03:52:03.01 ID:daO6fC9u
遅いってもよっぽどごちゃごちゃやらなければ大抵問題ないけどね
この言語が高速でよかった

277 :デフォルトの名無しさん:2015/06/11(木) 04:01:20.90 ID:MySFlDEH
powが遅いだの三項演算子が遅いだの、そればっかりだなお前らは
もっと見るべきところがあるだろ

278 :デフォルトの名無しさん:2015/06/11(木) 08:43:34.26 ID:5ATPWi5/
お前らな、ちゃんとコンパイラさんが吐くコードを確認してんのか?今時のコンパイラさんは、ifで書こうが三項演算子で書こうが同じ様なコード吐くぞ。GHZ駆動の時代に、数サイクルを気にしたところ意味で無いんだから、読みやすいコードかけよ

279 :デフォルトの名無しさん:2015/06/11(木) 08:44:34.79 ID:tPMat1Sk
>コンパイラさんが吐くコードを確認してんのか

してないけど、すると何かいいことあるの?
オナニー?

280 :デフォルトの名無しさん:2015/06/11(木) 08:51:56.46 ID:KETbMg1T
そもそも>>249がどういう状態なのかよくわかってないっす
sortのテンプレート引数ってイテレータの型だよね?

281 :デフォルトの名無しさん:2015/06/11(木) 09:23:58.56 ID:PuDMuD0l
テンプレート引数は実行時の値は入れられないという基本を知らない初心者が勘違いしただけ

282 :デフォルトの名無しさん:2015/06/11(木) 09:26:54.12 ID:+CTai5Iv
テンプレートがマクロの延長上にあることに気付かないと2ちゃんでどや顔で批判するのは難しいよw

283 :デフォルトの名無しさん:2015/06/11(木) 11:31:38.39 ID:o2v80gK8
non-typeテンプレートパラメーターだろjk
何もおかしなことはない

284 :デフォルトの名無しさん:2015/06/11(木) 13:49:32.58 ID:q/LkR2I6
>>280
std::sortとは誰も言っていないw

285 :デフォルトの名無しさん:2015/06/11(木) 13:54:51.91 ID:4gLlgTqt
>>281
実行時の値が、使えないって?
コンパイル時に決定してることなんてある?

286 :デフォルトの名無しさん:2015/06/11(木) 13:57:20.72 ID:FmOUSr/Q
>>285

287 :デフォルトの名無しさん:2015/06/11(木) 14:09:28.92 ID:IsG2Qw3q
>>285

288 :デフォルトの名無しさん:2015/06/11(木) 17:24:15.51 ID:Ufbw3rnf
>>285
前にTemplateMetaProgrammingスレでも同じこと言ってるのがいたけど、同一人物?

289 :デフォルトの名無しさん:2015/06/11(木) 17:28:52.86 ID:vXzw9Z8e
はい

290 :デフォルトの名無しさん:2015/06/11(木) 17:29:20.80 ID:atmX+Ip6
僕もでつ

291 :デフォルトの名無しさん:2015/06/11(木) 17:29:45.91 ID:4Nwg+HdI
呼んだ?

292 :デフォルトの名無しさん:2015/06/11(木) 17:34:19.30 ID:q/LkR2I6
なりすまし?

293 :デフォルトの名無しさん:2015/06/11(木) 17:35:51.78 ID:ZqtYY7Sn
そんなイケメンじゃねーよ

294 :デフォルトの名無しさん:2015/06/11(木) 17:36:20.78 ID:q/LkR2I6
それって、すけこましw

295 :デフォルトの名無しさん:2015/06/11(木) 17:40:20.70 ID:Vua1nX6w
りんごかもしれない

296 :デフォルトの名無しさん:2015/06/11(木) 19:00:53.60 ID:daO6fC9u
>>279
実装の実態を知っておくとコーディングに役立つこともある…かもしれない

297 :デフォルトの名無しさん:2015/06/11(木) 19:23:10.18 ID:IsG2Qw3q
最適化かけた時だけ発現するバグはアセンブリ見た方が早い。

298 :デフォルトの名無しさん:2015/06/11(木) 19:38:43.86 ID:q/LkR2I6
アセンブラよめないのに
www

299 :デフォルトの名無しさん:2015/06/11(木) 20:41:21.33 ID:Y7axMzJ0
>>250
assertが一切出てこないって何なん?

300 :デフォルトの名無しさん:2015/06/11(木) 20:43:16.81 ID:ESr81XRP
assertと例外は違うだろう

301 :デフォルトの名無しさん:2015/06/11(木) 21:57:11.83 ID:PuDMuD0l
>>283
地味に恥ずかしいレスだな

302 :10人に1人はカルトか外国人:2015/06/11(木) 22:00:45.73 ID:nlOBgROl
▲マインド コントロールの手法▲

・沢山の人が偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法

偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い

靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト

10人に一人はカルトか外国人

「ガスライティング」で検索を!

303 :デフォルトの名無しさん:2015/06/11(木) 22:14:20.46 ID:Toa4qrau
数値計算について初歩的な質問があります。

doubleの変数はおよそ15桁くらい正しい(数値誤差が入らない)と思います。
四則演算をはじめとする各種演算に伴って数値誤差は増大するのでしょうか。
コンパイラによるとしたら、g++ 4.8.2ではどうでしょうか。

また結果をprintf()で出力する際に数値的に有効な桁をできるだけ多く欲しいのですが、どのようにフォーマットを指定するのが良いでしょうか。
double型の変数aについて
printf("%15lf", a);
としても6桁しか表示されませんでした。

304 :デフォルトの名無しさん:2015/06/11(木) 22:31:35.70 ID:iS0g8Kna
>各種演算に伴って数値誤差は増大するのでしょうか

日本語でおk

305 :デフォルトの名無しさん:2015/06/11(木) 22:32:19.71 ID:XgvKq4Ru
C++11ってそろそろ使う人が増えてきたんでしょうか

ある程度使ってる人が増えないと
Cudaみたいにある日突然仕様変わって
古いコード動かなくなることあるからなあ

306 :デフォルトの名無しさん:2015/06/11(木) 22:38:46.50 ID:ESr81XRP
そんなDじゃあるまいし

307 :デフォルトの名無しさん:2015/06/11(木) 22:44:50.42 ID:PuDMuD0l
>>303
>四則演算をはじめとする各種演算に伴って数値誤差は増大するのでしょうか。
気をつけない限り増大する。
a.doubleで表現できないのがある(十進0.1が有名)
b.その仮数15桁以上の値の丸め誤差。
分数型を使うなどで回避可。

>6桁しか表示されませんでした。
科学的表記法が欲しいという意味なら%.15e

308 :デフォルトの名無しさん:2015/06/11(木) 22:48:02.99 ID:vb8D/rbx
桁落ちとかな

309 :デフォルトの名無しさん:2015/06/11(木) 22:55:24.03 ID:PuDMuD0l
情報落ちと丸め誤差の違い、桁落ちの実際は
自分もよくわからないので説明しなかった
桁落ちは浮動小数点数で有効数字が減るというのがよくわからん

310 :デフォルトの名無しさん:2015/06/11(木) 23:07:01.54 ID:MySFlDEH
>>307
ありがとうございます。
桁落ちは回避の工夫をしてます。
が、他の要因で有効桁が15桁より下がる覚悟は一応持つことにします。

>科学的表記法が欲しいという意味なら
小数としての表示で良いのですが、有効な桁数をできるだけ多く表示したいということです。
とりあえず思考停止で10桁くらいは安全だと考えると、整数部と小数部の桁数の合計が10桁になるようにしたいのですが、そのフォーマット指定のやり方が分かりません。
例えば
printf("%.10lf", a);
は小数部を10桁表示するという意味ですよね?(私はこれを勘違いしているかもしれません。)
整数部と小数部がそれぞれ何桁か不明なときに整数部と小数部を合計10桁出力したいときはどうしたらよいのでしょうか。

311 :303:2015/06/11(木) 23:07:58.89 ID:MySFlDEH

IDが変わった上に被りましたが303です。

312 :デフォルトの名無しさん:2015/06/11(木) 23:19:03.99 ID:o6JsBkeK
>四則演算をはじめとする各種演算に伴って数値誤差は増大するのでしょうか。

普通の日本語に思えるがな。

>>305
プラットフォームによるんじゃね

313 :デフォルトの名無しさん:2015/06/11(木) 23:42:21.05 ID:phbL6DGJ
継承と委譲ってどう使い分けるものなの?
詳しく教えてほしい

314 :デフォルトの名無しさん:2015/06/12(金) 00:36:43.43 ID:KLuO69bs
原則は
is-aが成り立つなら継承
has-aなら委譲

has-aでもtemplate methodパターンを適用する必要があるならprotected継承なんかを使ったりする。

メモリレイアウトを一切変えずに、機能追加のみしたい場合には、一切仮想関数を使わずにpublic継承を使ったりする

315 :デフォルトの名無しさん:2015/06/12(金) 02:33:05.48 ID:mLuCQ1ez
たいして何もしなくてもとりあえず動くが、継承しているため継承元をおいそれと変えられなくなる継承
いちいち細かく移譲する機能を定義する必要があるが、参照先を変えることで移譲元は変え放題の移譲
どっちdo you like?

316 :デフォルトの名無しさん:2015/06/12(金) 08:38:15.95 ID:y2zTlRDt
つ["%.15g"]

317 :デフォルトの名無しさん:2015/06/12(金) 08:41:19.38 ID:y2zTlRDt
>>310
少しはprintf()のマニュアルページを読めよ。
そもそも%lfはその成り立ちから考えれば%fにするべきだ。

318 :デフォルトの名無しさん:2015/06/12(金) 08:43:31.29 ID:RrO0RO1b
>>310
誤差論を勉強すべし。
もとデータの有効桁数以上計算しても、意味なし。

319 :デフォルトの名無しさん:2015/06/12(金) 18:21:48.43 ID:OWLZUxPt
>>317
%lfはその成り立ちを考えればこそ、
最初%fにしてしまった誤りを1999年にようやく訂正できたと思うのだけれど

320 :デフォルトの名無しさん:2015/06/12(金) 20:29:38.22 ID:ju6p67Z1
>>319

では、%lf が正解として、そのときに %f はどのような働きを持つ書式指定子になるのか?このとき %lf との違いは何?

321 :デフォルトの名無しさん:2015/06/12(金) 21:47:41.39 ID:KUZjLqlU
今日初めて More C++ Idioms を知った
何でこんなに多いんだ

322 :デフォルトの名無しさん:2015/06/12(金) 21:49:35.99 ID:TThNPGKa
C++ はあまりに『熟練者に優しく』なってしまったから

323 :デフォルトの名無しさん:2015/06/12(金) 21:57:07.02 ID:mLuCQ1ez
C++が必要かどうかはともかく、C++がすでに溶岩流状態なのは分かる
マジで作り直しが必要だと思うんだが、ここまでくるともう無理かも

324 :デフォルトの名無しさん:2015/06/12(金) 21:58:33.10 ID:TThNPGKa
作り直すより前にC++以外の解決法を取る人が多いんじゃないか

325 :デフォルトの名無しさん:2015/06/12(金) 22:01:31.50 ID:e/45jWns
昔は言語のヒエラルキーはC > C++だったが今はC << C++って感じだな。

326 :デフォルトの名無しさん:2015/06/12(金) 23:16:10.78 ID:ddIghUSg
>>320
ようわからんがprintf()の引数に書かれたfloatは勝手にdoubleに型変換されるから%fだけで済んだんだったはず
そのかわりscanf()の%fはfloat

327 :デフォルトの名無しさん:2015/06/12(金) 23:22:53.69 ID:4s8u5Pxc
マトモな思考をしていればscanfでは%fがfloatでprintfでは%fがdouble
などという設計をするはずがない

328 :デフォルトの名無しさん:2015/06/13(土) 01:57:15.07 ID:2SY64+lq
iostreamほどキモくなくてprintfより型安全なフォーマット関数が標準にあればいいのに…

329 :デフォルトの名無しさん:2015/06/13(土) 02:07:22.47 ID:xv1nvRDb
faith and braveの人が作ったの使ってるわ

330 :デフォルトの名無しさん:2015/06/13(土) 02:20:43.19 ID:ydZkeZWj
なんていう関数?

331 :デフォルトの名無しさん:2015/06/13(土) 02:23:21.99 ID:xv1nvRDb
http://faithandbrave.hateblo.jp/entry/20100803/1280841857
これ

332 :デフォルトの名無しさん:2015/06/13(土) 02:32:52.89 ID:ydZkeZWj
どうも

333 :デフォルトの名無しさん:2015/06/13(土) 04:37:45.77 ID:UPwWPDEU
boost信者菌が移っちゃうぞ

334 :デフォルトの名無しさん:2015/06/13(土) 04:39:52.79 ID:MLTzsV59
iostream はド変態だよな

335 :デフォルトの名無しさん:2015/06/13(土) 08:34:21.77 ID:DqWXtUju
変態なんじゃない
いくらお前がバカでもこれはおかしいと気付けよ
という悪い見本

336 :デフォルトの名無しさん:2015/06/13(土) 09:25:12.18 ID:jqTzSEpl
%lfってlong floatだよな
そういう型を作る構想でもあったんじゃね

337 :デフォルトの名無しさん:2015/06/13(土) 09:40:26.14 ID:FQeTzdta
>>327
はずがないってわめいてもそうなってるんだからしょうがない
そもそも printf( ) のせいじゃないから、わめくならCの仕様に文句つけろよ

>>336
俺って最近影薄い?

... double

338 :デフォルトの名無しさん:2015/06/13(土) 11:05:04.66 ID:UaufLIam
クラスのstringzing的なメソッドをoperator<<()のオーバーロードで作ってみたり(さらにその中でstd::ostringstreamを使ってみたり)
するのが漏れの中で一時期流行ったがすぐに廃れた
些細なクラスまでもことごとくstd::ostreamに依存してしまうのがスゲー嫌になった
人間はクラス固有のstringzingメソッドの追加とstd::string::c_str()で渡り合うくらいの所でやめておくべきだったと思うよ

339 :338:2015/06/13(土) 11:07:21.37 ID:UaufLIam
訂正
誤: クラスのstringzing的なメソッド
正: クラスのシリアライズメソッド

340 :338:2015/06/13(土) 11:10:02.77 ID:UaufLIam
まだあったスマンorz
誤: strigzing
正: stringizing
よく間違う、

341 :デフォルトの名無しさん:2015/06/13(土) 13:12:21.92 ID:ZPUmC8i9
>>336
最初期のCに、実際あって、doubleの別名だった。

342 :デフォルトの名無しさん:2015/06/13(土) 20:07:25.12 ID:jKGoCo7L
>>325
いまどきCとか,何かの罰ゲームだと思ってしまう

343 :デフォルトの名無しさん:2015/06/13(土) 20:33:52.62 ID:6grWS76k
イテレーターは欠陥だと思う
イテレーターがポインターだったら
++iteratorが使えないだろ
イテレーターに基底ポリモーフィズム使いたいときどうすんの
ただしくは
add(iterator)のようなインライン関数でラッピングするのがよいだろう

344 :デフォルトの名無しさん:2015/06/13(土) 20:42:56.17 ID:jKGoCo7L
>>343
>イテレーターがポインターだったら++iteratorが使えないだろ


345 :デフォルトの名無しさん:2015/06/13(土) 20:45:49.91 ID:7Wz3Bgi+
>イテレーターがポインターだったら
>++iteratorが使えないだろ

ちょっと何言ってるのか
kwsk

346 :デフォルトの名無しさん:2015/06/13(土) 20:46:13.99 ID:6grWS76k
iterator->operator++あるいは++(*iterator)
ここまでいえばさすがにわかるでしょwww

347 :デフォルトの名無しさん:2015/06/13(土) 20:46:43.91 ID:jqTzSEpl
>>341
↓この時点で、もう廃止されていたんだな
http://cm.bell-labs.co/who/dmr/cman.pdf

348 :デフォルトの名無しさん:2015/06/13(土) 20:49:03.41 ID:xv1nvRDb
++iteratorじゃないじゃん

349 :デフォルトの名無しさん:2015/06/13(土) 20:50:09.59 ID:jqTzSEpl
>>346
いや、その説明で益々わからなくなった
iteratorに指されている実体に対して、
なぜ特定のメンバ関数operator++が呼び出せないのか、
そして呼び出せないことがなぜiteratorの欠陥なのか、
頭悪い俺らにもわかるようにかみ砕いて説明してくれ

350 :デフォルトの名無しさん:2015/06/13(土) 20:51:30.21 ID:ZJMFwp+B
基底ポリモーフィズムって何?
オレオレ用語使わないでくれる?

351 :デフォルトの名無しさん:2015/06/13(土) 20:58:02.47 ID:6grWS76k
ベースクラスポリモーフィズムのことだとわかるが
begin()の戻り値がイテレーターのポインターだった場合どうするのか
考えてみよう
猿でもわかると思うが

352 :デフォルトの名無しさん:2015/06/13(土) 20:59:38.32 ID:xv1nvRDb
イテレーターがポインタと
イテレーターのポインタじゃ意味が全く違うじゃねーか!

353 :デフォルトの名無しさん:2015/06/13(土) 21:02:58.62 ID:jKGoCo7L
>>346
問題なく ++(*iterator) できているんだが
http://codepad.org/CsftRCf0

354 :デフォルトの名無しさん:2015/06/13(土) 21:03:06.24 ID:ZJMFwp+B
>begin()の戻り値がイテレーターのポインター
そんな現実にない仮定を持ち出されても困るんだが
普通にポインタの参照剥がしてイテレーター使えばいいんじゃないかな

355 :デフォルトの名無しさん:2015/06/13(土) 21:07:54.58 ID:7HvlRcHr
やっぱりfor(int i=0;・・・が一番だな。
イタレータ何て滅多に使わん

356 :デフォルトの名無しさん:2015/06/13(土) 21:09:22.11 ID:6grWS76k
>>353
++(*iterator)をアルゴリズムの中でつかえば
++iteratorがアルゴリズムの中で使えなくなり
その逆も成り立つ
>>354
現実にありまくり

357 :デフォルトの名無しさん:2015/06/13(土) 21:11:38.23 ID:ZJMFwp+B
>>356
例を出してくれ
少なくともC++標準ライブラリにあるコンテナは
イテレーターのポインタなんて返さないんだが

358 :デフォルトの名無しさん:2015/06/13(土) 21:14:45.85 ID:xv1nvRDb
>>353のイテレーターは後置でインクリメントしてるけど
++pとしても何も問題ないし
++pと++(*p)は両立できるぞ

359 :デフォルトの名無しさん:2015/06/13(土) 21:20:05.04 ID:6grWS76k
>>357
俺の書いたプログラムには出てくるのだから
その確率は高いだろ
>>358
f(c.begin())としたときc.begin()がポインターであるときと
そうではないときを比べてみよう

360 :デフォルトの名無しさん:2015/06/13(土) 21:22:30.74 ID:jKGoCo7L
イテレータはポインタだと思っていたが,そうじゃないの?

361 :デフォルトの名無しさん:2015/06/13(土) 21:23:08.86 ID:6grWS76k
イテレーターはコンセプト、ポインターじゃないよ

362 :デフォルトの名無しさん:2015/06/13(土) 21:24:17.76 ID:jKGoCo7L
イテレータの欠陥ぶりを示す例はないものか?

363 :デフォルトの名無しさん:2015/06/13(土) 21:29:12.75 ID:tUm8uX2M
ようやく理解した
derived d1[N];

do_thingy ( (base*)&d1[0], (base*)&d1[N])
したいということね。
…できないと何か問題あるんだっけ。。

364 :デフォルトの名無しさん:2015/06/13(土) 21:31:02.27 ID:ZJMFwp+B
何だオレオレライブラリの話か
時間損した

365 :デフォルトの名無しさん:2015/06/13(土) 21:33:17.96 ID:xv1nvRDb
>>363
テンプレートでいいんじゃね
イテレーターで解決しようとするから問題がややこしくなる

366 :デフォルトの名無しさん:2015/06/13(土) 21:34:39.10 ID:6grWS76k
引数でイテレーターを渡すときは何とかなるが
アルゴリズムの中でイテレーターを使うときに一番困るんだよな

367 :デフォルトの名無しさん:2015/06/13(土) 21:54:57.65 ID:UaufLIam
イテレータへのポインタを自作ライブラリ(非テンプレート)で扱ってどうすんの?
ていうかどういうシチュなのかいまいちわからん…
コンテナと切り離さずに使うイテレータならイテレータをそのまま関数に渡せばいいし
コンテナと切り離された、イテレータ全般というブツに対して何がしかをやりたいということなら、
そのような「非テンプレート」関数は論理的に存在し得ない希ガス…
(イテレータのメンバ関数(たとえばoperator++()とか)は異なるコンテナのイテレータ同士ではシンボルレベルで別の関数なのでビルド時に何を呼ぶのか決まらない)
だからイテレータへのポインタとかナンセンス

derivedなコンテナのbase、というのもlist風とかな特殊な状況でないと存在し得ない(baseとderivedで要素サイズが変わるため、
コンテナとポリモーフィズムはよほどトリッキーなことをしないと両立しないから、こっちの線で読んでも論理的にほぼ不可能なことをやろうとしている希ガス…

というわけでどういうコードを想定しているのやろうか…

368 :デフォルトの名無しさん:2015/06/13(土) 22:07:58.55 ID:ZJMFwp+B
テンプレートが使えないからイテレーターへのポインタなんて
トリッキーなこと考えちゃったんだろうね

369 :デフォルトの名無しさん:2015/06/13(土) 22:09:14.00 ID:UaufLIam
イテレータとポインタの速度差を気にしているのなら
std::vector::iteratorあたりならちょっと賢いコンパイラならそれ自体ビルド結果がポインタと同等な希ガス…
つまり速度重視ならポインタと同等なイテレータを書くか、要素型のポインタを直接使えば良いのであって、
やっぱイテレータへのポインタとかナンセンスなんや

370 :デフォルトの名無しさん:2015/06/13(土) 22:17:35.67 ID:jqTzSEpl
イテレータへのポインタか
**は普通に使うよね

371 :デフォルトの名無しさん:2015/06/13(土) 22:28:13.48 ID:XtBiSGNi
メモリポインタなら普通に使うが?

372 :デフォルトの名無しさん:2015/06/13(土) 22:30:54.18 ID:ndcd2KXD
イテレータはプッシュしただけで無効になるとかクソすぎるわ
イテレータの問題じゃなくてそのコンテナの問題だけど

373 :デフォルトの名無しさん:2015/06/13(土) 22:31:58.66 ID:xv1nvRDb
listなら無効にならないよ

374 :デフォルトの名無しさん:2015/06/13(土) 22:32:57.64 ID:6grWS76k
基底コンテナからの派生コンテナにおいて
基底コンテナのポインターに代入された派生コンテナを考えてみよう
このとき基底コンテナのポインターからどのように派生コンテナのイテレーターをえるのか
あるアルゴリズムの引数として基底クラスのコンテナを渡しアルゴリズムの内部で
イテレーターを得てつかうとする

そのほかにもこの方法は有用な使い方がある例えばイテレーターとして
beginイテレーターとendイテレーターのペアをイテレータと考える
そしてhasNextとnextというおなじみのインライン関数をを自分で定義して使う

375 :デフォルトの名無しさん:2015/06/13(土) 22:36:11.27 ID:ZJMFwp+B
基底コンテナとか派生コンテナとか
オレオレコンテナ作ってるようわぁ…
コードは地獄だろうな…

376 :デフォルトの名無しさん:2015/06/13(土) 22:38:10.91 ID:ndcd2KXD
専用のコンテナ作るのはうちの業界では常識だなあ
標準のは使い物にならんから

377 :デフォルトの名無しさん:2015/06/13(土) 23:12:13.91 ID:19wKs4Az


作るのって難しいの?

378 :デフォルトの名無しさん:2015/06/13(土) 23:13:51.68 ID:kddE1Hn/
別に

379 :デフォルトの名無しさん:2015/06/13(土) 23:14:02.53 ID:UaufLIam
性能に不足があるのなら専用コンテナを作ればいいじゃない…?←ワカル
よっしゃパパがんばって汎用コンテナの再発明しちゃうぞー←ワカラン…

380 :デフォルトの名無しさん:2015/06/13(土) 23:46:22.48 ID:jqTzSEpl
例外だとか動的記憶だとかを満載で使われると困るニーズがあるのよ

381 :デフォルトの名無しさん:2015/06/14(日) 00:17:28.37 ID:ytfJcMgU
よくわからんが それは
カスタムアロケーターでは解決できないのかね

382 :379:2015/06/14(日) 00:38:14.97 ID:VB29lk6s
>381のは漏れジャナイ、
分野によってはmalloc()の使用すら悪設計と看做される
シンプルな造りにすべきときは極限までシンプルに作るべき、だとは思う

383 :デフォルトの名無しさん:2015/06/14(日) 01:02:17.11 ID:NCWDIoFd
できるだけシンプルに、ただしシンプル過ぎないように(名言)

384 :デフォルトの名無しさん:2015/06/14(日) 01:11:43.37 ID:AF4mjcpj
無駄な複雑さを取って付けてご機嫌を取ろうとするのは
シンプル過ぎることに輪をかけた悪

385 :デフォルトの名無しさん:2015/06/14(日) 01:13:00.67 ID:ocyd5wvL
>>382
そう言う分野でC++はありなのか?

386 :デフォルトの名無しさん:2015/06/14(日) 01:25:15.44 ID:WgPnxzZM
>>382
>分野によってはmalloc()の使用すら悪設計と看做される
プールからの割当ならカスタムアロケータで十分だろ
というか一般にnew実装でmalloc使ってる事多いのに意味不明

387 :デフォルトの名無しさん:2015/06/14(日) 01:33:46.50 ID:WgPnxzZM
そもそも組み込みのnewをNULLチェックするような分野では
例外/rtti入ってるstlなぞ組み込みでは使わんぞ
メモリプールを使うなら上述の通り
stlで駄目な子はiostreamぐらいだろうに

388 :379:2015/06/14(日) 02:13:56.77 ID:VB29lk6s
>>386
メモリはあらかじめ大きさを設計した固定長の配列を使うのですよ
全コードにそれを通底させれば(C++流では無いやり方でだが)メモリリークの悪夢からは完全におさらばできるし、
デバッガできわめて追いやすい(万が一現実にクラッシュしたとして、メモリダンプからでも簡単に追える
そんな感じで作るなら、アロケータ以外についてSTLに相乗りするのはコードが不透明になるだけでメリットがあんまり無い

malloc()が悪、とにかく動的メモリ確保全般悪、というのは少なくともニコニコ動画の初期のWebサービスを書いてたプログラマの話としてあった(彼らはC++で書いてた

ようわからんが宇宙機のプログラムなんかも原則動的メモリ確保禁止なんじゃね?
ハードエラーを起こしたメモリ領域を回避するプログラムを後からアップロードしたりした事例があるし…

389 :デフォルトの名無しさん:2015/06/14(日) 02:23:26.51 ID:GSBQ/QXQ
おまえらいつまでSTLみたいな化石ライブラリ使ってんだよw
ちなみにSTLにiostreamなんてものは無いぞ

390 :デフォルトの名無しさん:2015/06/14(日) 02:24:34.46 ID:onP+ujzn
スタンフォード・テンプレート・ライブラリは公開からまだ5年。

391 :デフォルトの名無しさん:2015/06/14(日) 02:44:19.18 ID:TW+i3CDs
>>388
固定長の配列からメモリをやりくりしても返すの忘れたらメモリ足りなくて詰むがな

392 :デフォルトの名無しさん:2015/06/14(日) 02:57:28.00 ID:VB29lk6s
>>391
返す必要は無いしやりくりすらしない。単に上書きするだけ~
{ 書き込む主体 } × { 書き込み内容 } と{ 書き込み先アドレス(メモリ) }を1対1で紐付けるという発想の転換、
{ 書き込む主体 }すなわちスレッド(タスク)の数が固定ならこれで書ける
極限まで推し進めれば例外としてはキューだけが残るが、キューに入れたが出し忘れるとかはさすがにコードを見ればわかるのでは…

393 :デフォルトの名無しさん:2015/06/14(日) 03:00:00.33 ID:ntWSdT35
>>391
返すのを忘れるなんてあり得ないくらいに単純に作るに決まってんだろ
想像しろ
グローバル変数g1,g2,g3が有ったとする
mainの中でこれらを駆使して演算するコードを書く
あとは変数をg[3]に書き直せば出来上がりだ

394 :デフォルトの名無しさん:2015/06/14(日) 03:09:20.91 ID:WgPnxzZM
>>388
>メモリはあらかじめ大きさを設計した固定長の配列を使うのですよ
だからそれをプールからの割当という

>>389
確かにそこは語弊が合ったな
「標準ライブラリで駄目なのは」だ

395 :デフォルトの名無しさん:2015/06/14(日) 03:10:21.80 ID:TW+i3CDs
>>392
結局配列の大きさ以上のことはできないのか
メモリケチケチな環境でしか使えんだろうな

>>393
それ3つを配列にしたところで何もうれしくないだろ

396 :デフォルトの名無しさん:2015/06/14(日) 03:16:15.32 ID:VB29lk6s
>>394
グローバル変数int g_hoge[3][1000];と書くのはプールからの割当なのやろうか…
OSのプロセス起動メカニズムからするとプールからの割当なのかもしれんが、OSは十分デバッグ済み(バグ無し)と看做すなら今の話の筋ではないし、
そもそもOS無しというケースもあるし、(その場合、ブートストラップコードがMAPファイルに従って(つまりガチで固定アドレスの領域であるところの)BSSをゼロクリアする。

397 :デフォルトの名無しさん:2015/06/14(日) 03:17:21.08 ID:WgPnxzZM
>>392 >>393
あのなあ…プールから割当する場合は、足りなくなったら一番古いのを開放するんだよ
固定長はそういうデータ構造でえしか使わない、というか使えない

ゲームなどの場合は速度的にプール使うが、確保回数減らすだけで固定長じゃない
組み込みと違ってシステムコールのコストを削る目的だからな

398 :デフォルトの名無しさん:2015/06/14(日) 03:19:10.90 ID:WgPnxzZM
>>396
そこのどこに自作コンテナな要素があるのだ
つかそれもうC++じゃなくてCだろ

399 :デフォルトの名無しさん:2015/06/14(日) 03:27:27.12 ID:WgPnxzZM
もしかして組み込みは固定で確保!
volatile指定で特定アドレスにIO書き込むんだ!とかの話だったの?
てっきりコンテナの話だと思ってたんだが…

400 :デフォルトの名無しさん:2015/06/14(日) 03:28:32.10 ID:poWW0AcO
388が話をすり替えた

401 :デフォルトの名無しさん:2015/06/14(日) 04:26:41.70 ID:WgPnxzZM
というか話の流れ以前によく読むと>>392おかしい?
まあもう良いか

402 :デフォルトの名無しさん:2015/06/14(日) 05:04:41.91 ID:VB29lk6s
どこがどうおかしいのか説明できない>401ェ、
まあもう良いか

403 :デフォルトの名無しさん:2015/06/14(日) 05:19:30.89 ID:l9uYakks
深夜から早朝までワイワイ騒いで話していた事といえばコンテナですらないただの配列とはね…
まあ、配列よく使うけど

404 :デフォルトの名無しさん:2015/06/14(日) 08:36:30.36 ID:xTZsKt+a
標準コンテナでダメな点
遅い
デカイ
カスタムアロケータでは充分なカスタムができないし冗長
デバッグとリリースで極端な速度差がある

405 :デフォルトの名無しさん:2015/06/14(日) 11:05:46.12 ID:BYpp5lV7
>遅い
>デカイ
制約の強い状況で部品の自作は当たり前だと思うけどね。
市場に販売される車輪では要件を満たさないので車輪を自作することは、再発名とは言わない。
だが「標準のは使い物にならんから」と言うのは再発明の疑いが濃厚

406 :デフォルトの名無しさん:2015/06/14(日) 12:22:03.44 ID:NCWDIoFd
速度は求めてないからとりあえずmapを大量につかう場合
型ごとにテンプレート展開されるからやたらデカくなるじゃん
あれをコンパクトにする手法とかイディオムってある?

407 :デフォルトの名無しさん:2015/06/14(日) 12:29:48.84 ID:WgPnxzZM
>>402
・マルチスレッドなんてリッチなOSで配列直接割当とか意味不明
・そもそもキューは呼び出し側も書き込みする=まず破綻してる
・その上で競合どう解決すんの?

>極限まで推し進めれば例外としてはキューだけが残るが
>キューに入れたが出し忘れるとかはさすがにコードを見ればわかるのでは…
キューをコードだけ見て消費がわかるとか意味不明
明らかにプログラミングしたこと無いだろ

そんな奴がなんで人に喧嘩売れるんだか
本当理解不能

408 :デフォルトの名無しさん:2015/06/14(日) 12:37:00.30 ID:WgPnxzZM
>>407
訂正
・そもそもキューは読み出し側も書き込みする

カーネル側のメモリは潤沢に使えると言うならまあ通るが
それだと元のシンプルさなんて全然無い上に
ユーザーランドのプログラムだけ低レベルとか相当に変な制限だ

という事で、マルチスレッドでcasも使えないqueueを
セマフォ+大量のスレッドスタック(タスク)退避領域など
結構な量の余分なメモリ領域無しにどう解決すんのか聞いてみたいね

409 :デフォルトの名無しさん:2015/06/14(日) 12:45:04.25 ID:WgPnxzZM
ちなみにcasが使えない理由は書き込み領域が固定だから
別にqueue構造にcasが使えないわけじゃないからね

410 :デフォルトの名無しさん:2015/06/14(日) 13:01:51.04 ID:VB29lk6s
>>407
スレッドごとの記憶をスレッドローカルにすればスレッドごとの競合は考えなくとも良いし、これは配列で実現できる
実は>396にて
 int g_hoge[3][1000];
という2次元配列の例にしたのは、2つめの添え字をスレッド別にする、という想定があったから
(そこまで突っ込んで説明する段階で無かったからその場では説明しなかったが、2つめの添え字をスレッド番号にすれば良い

キューの読み書きは読む側と書く側で当然排他制御する
これはSTLのコンテナを使おうがなんだろうが、マルチスレッド想定では避けられないから漏れの主張とは独立だから漏れのへの批判としては筋違い

やっぱ>407の人のはいまいち発想の転換力が不足しとりますなあ(>392付近の流れあたりから思ってたけどね)…

411 :デフォルトの名無しさん:2015/06/14(日) 13:07:22.92 ID:WgPnxzZM
>>410
>スレッドごとの記憶をスレッドローカルにすれば
>スレッドごとの競合は考えなくとも良いし、これは配列で実現できる
>キューの読み書きは読む側と書く側で当然排他制御する
>これはSTLのコンテナを使おうがなんだろうが、マルチスレッド想定では避けられないから漏れの主張とは独立だから漏れのへの批判としては筋違い
「配列で実現できる」は配列にする理由にならない
発想の転換力って何?君てんかん持ちなの?

412 :デフォルトの名無しさん:2015/06/14(日) 13:09:18.21 ID:+OSalyPV
>>410
thread_localは使わなくていいの?

413 :デフォルトの名無しさん:2015/06/14(日) 13:14:12.33 ID:WgPnxzZM
もう一度丁寧に書くけど
スレッドローカル(笑)まで面倒見てくれる所じゃ
そう言うプログラムじゃIO即値の処理すらインライン関数化してるし
並列処理ならデータ構造いるよね

固定配列いちいち使う理由ってマジで何?
この期に及んでコストとでも言うつもり?

414 :デフォルトの名無しさん:2015/06/14(日) 13:15:32.85 ID:VB29lk6s
>>411
実現可能性については納得していただいたということでおk
(>410が通じないほどマルチスレッドに疎かったらどうしようかと思った;
>388以降の流れは実現可能性の議論のつもりなので…

>>412
少なくとも現行のx86やx64では特には不要。配列内のスレッドごとのアクセス領域の境界がキャッシュライン境界と一致してようがしまいが安全にスレッドローカルにできる、
(スレッドAのアクセスの巻き添えを食ってスレッドB用の領域がぶち壊れるという心配は無い

415 :デフォルトの名無しさん:2015/06/14(日) 13:18:23.28 ID:WgPnxzZM
>>414
あのさ言い訳してる所悪いけど、
それ「そんな環境無い」って認めてるようなもんだよね

酒でも飲んで適当言って失敗したって一言言えばそれでいいのに
言い訳するせいでどんどん墓穴掘ってないか

416 :デフォルトの名無しさん:2015/06/14(日) 13:18:58.39 ID:VB29lk6s
>>412補足
もっとも、スレッドごとのアクセス領域の境界がキャッシュライン境界と一致させたほうがキャッシュのREFILL回数が減るのでパフォーマンスが上がるから、
両境界は合わせた方がモアベターなのは確か

417 :デフォルトの名無しさん:2015/06/14(日) 13:20:23.36 ID:+OSalyPV
そういう話ではないのでは?
thread_localはスレッド変数とでも言うべきもので、使い勝手を考えた物だと思うんだけど

418 :デフォルトの名無しさん:2015/06/14(日) 13:20:43.30 ID:VB29lk6s
>>415
論点後出しで食い下がりモードですな…

419 :デフォルトの名無しさん:2015/06/14(日) 13:24:43.68 ID:WgPnxzZM
スレッドローカル前提でコンテキストスイッチ時の
キャッシュミスの話とかもう意味不明すぎるだろ…

だから何が目的で固定にするんだよ
知ってる単語並べてるだけじゃないか

420 :デフォルトの名無しさん:2015/06/14(日) 13:25:23.67 ID:WgPnxzZM
>>418
いや本当それまさにブーメランってやつだから
痛々しすぎるよ君

421 :デフォルトの名無しさん:2015/06/14(日) 13:26:33.03 ID:+OSalyPV
こういう人っているよね
本当にプログラムの話をしているのではなく、「自分を守る」ためだけに我論を突き通そうとする奴
誰もそんな奴受け入れないから
壁に向かってしゃべってろって感じ

422 :デフォルトの名無しさん:2015/06/14(日) 13:34:59.45 ID:RXXsbARc
長文が多いな
三行以下で書いてくれ

423 :デフォルトの名無しさん:2015/06/14(日) 13:41:04.32 ID:VB29lk6s
>>421
それはひょっとして人格に対する批判であって、内容に対する批判になっていないのでは…

かつ、その批判にしたって成立しないのでは…
1. コストの話を最初に持ち出したのは>>376であって漏れジャナイ
 (その後実行時コスト偏重に話を誘導したのは確かに漏れではあるがこれは話の発展ということで容赦願いたいね…)
2. thread_localでできて配列ではできない例がない限り、>>410に対しては>>414で完全な答えになってると思うが
 使い勝手のことなんて>>410に書いてないし、漏れは>>388以降実現可能性にフォーカスを当てているつもり

>>419
キャッシュのrefillはマルチコアCPUで一般にキャッシュ不整合を起こすのですよ
(するとスレッドAの書き込みでスレッドBの領域が打ち壊れる危険性が生じる
インテルの現行のはハードウェアで全コア安全にrefillしてくれるから安全、というだけ
マルチコアまで話が発展してなかったから脱線だったかもしらんが、内容そのものについては批判される言われはない希ガス

424 :デフォルトの名無しさん:2015/06/14(日) 13:42:19.80 ID:+OSalyPV
>>423
内容を批判するとすぐに屁理屈で返してきて一貫性がないってのを批判してるんですよ

425 :423:2015/06/14(日) 13:45:53.88 ID:VB29lk6s
訂正
誤: >>410
正: >>407

426 :デフォルトの名無しさん:2015/06/14(日) 13:46:20.80 ID:l9uYakks
で、一体いつまで続くんだこれ

427 :423:2015/06/14(日) 13:47:10.43 ID:VB29lk6s
スマン>>423再訂正orz
誤: >>410
正: >>412

428 :デフォルトの名無しさん:2015/06/14(日) 13:48:15.47 ID:+OSalyPV
見苦しいからもうやめとけ
IDであぼ~んしとくから

429 :デフォルトの名無しさん:2015/06/14(日) 13:52:04.70 ID:WgPnxzZM
>>423
君が言いたいのは元々malloc不要論だろうに
なぜか飛躍して、配列固定で自分で話進めて
それじゃ何もできないと知ってOS側でスレッド管理、排他処理から始まって
ついにスレッドローカル(普通は動的割当)の導入まで来たもんだ

君の言う実現可能性って「固定配列触れば実現」って程度なの、わかるかな?

430 :429:2015/06/14(日) 14:01:23.69 ID:VB29lk6s
>>429
>君が言いたいのは元々malloc不要論だろうに
おkその通り

>なぜか飛躍して、配列固定で自分で話進めて
おk、まあこれもそう

>それじゃ何もできないと知って
どこにそんなレスが…?固定配列で実現できる、というスタンスは一貫してるし説明もしたし、

>OS側でスレッド管理、排他処理から始まって
OS側でスレッド管理というのは最初からの想定として良い(漏れ(ら)はそこのメカニズムまで変える話はしていない
排他制御については>>407が言い出したことだが、これも同様で、漏れ(ら)はそこのメカニズムまで変える話はしていない

>ついにスレッドローカル(普通は動的割当)の導入まで来たもんだ
スレッドローカルな記憶を配列で静的割当でやっても可能ということは示したし、(つまりスレッドローカル記憶と、割当メカニズムは独立の話
普通はどうするか、というのは>>388以降の実現可能性の議論とはあんま関係無い感じなのでは…

431 :デフォルトの名無しさん:2015/06/14(日) 14:01:48.15 ID:yKIIahzl
横から思いつきレスすると
スレッドローカルストレージは
作るとき便利だけどデバッグしにくい

432 :デフォルトの名無しさん:2015/06/14(日) 14:19:28.79 ID:WgPnxzZM
>>430
>排他制御については>>407が言い出したことだが、
>OS側でスレッド管理というのは最初からの想定として良い(漏れ(ら)はそこのメカニズムまで変える話はしていない
スレッドはまあいいよ、前提だから

>排他制御については>>407が言い出したことだが、これも同様で、漏れ(ら)はそこのメカニズムまで変える話はしていない
いやその言い訳は無理でしょ、君がキュー可能と言い出したんだし

というかOS側セマフォ使うなんて完全にリソースの動的割り当てだし
スレッドローカルもこちらからは動的、カーネル側が静的実装かは関係ないよ
自分で実装したらただのグローバル

取り繕っても、話を進める度に不利な状況を自分で作り出してるんだよ
いい加減大した意味がないと認めたら?

433 :デフォルトの名無しさん:2015/06/14(日) 15:36:41.52 ID:VB29lk6s
>>432
>君がキュー可能と言い出したんだし
なんか誤解があるようだが、キューというのは単なるFIFO、すまりSTLでいうところのstd::queueであって、
漏れの>>388以降の議論とは独立に(もともと存在する)メカニズム。
FIFOを固定配列でも実現可能なのは自明。ただ>>391の言うとおり、メモリをやりくりする必要性があり、リークし得るというのは当てはまるから、
>>392でリークを起こす危険性に言及し、回答もした

>というかOS側セマフォ使うなんて完全にリソースの動的割り当てだし
最初から言ってるのはアプリ側の動的メモリ確保の排除であってOSの中を変えるとは言ってないし、
>>396
>OSのプロセス起動メカニズムからするとプールからの割当なのかもしれんが、OSは十分デバッグ済み(バグ無し)と看做すなら今の話の筋ではないし、
という前提を表明しているから、いまさら「OSの内部で動的確保している(かもしれない)から藻前の論理は成立しない」というのは
食って掛かってる以外の何者でも無いって言うか、
話が追えていない人に墓穴の存在を言われてもなあ…

434 :デフォルトの名無しさん:2015/06/14(日) 15:46:46.05 ID:VB29lk6s
>>432
>というかOS側セマフォ使うなんて完全にリソースの動的割り当てだし
>スレッドローカルもこちらからは動的、カーネル側が静的実装かは関係ないよ
>自分で実装したらただのグローバル
これは正直意味わからんkwsk、

>自分で実装したらただのグローバル
これはその通り。だが,、スレッド番号を配列の添え字にするという>>410のやり方で、
スレッドローカルな記憶として機能を果たす(実現可能ではある)ことは>>411には合意いただいたはずだが
つまりグローバルかどうかはあんま論点じゃないっていうか、

435 :デフォルトの名無しさん:2015/06/14(日) 16:06:11.74 ID:WgPnxzZM
>>433
>ただ>>391の言うとおり、メモリをやりくりする必要性があり、リークし得るというのは当てはまるから、
>>>392でリークを起こす危険性に言及し、回答もした
いやまさか
>リークを起こす危険性に言及し、回答もした
=バグ無くなる云々などの元の提起が破綻してる事を認めてる
とは思わなかったぞ…それで何でまだ実現可能って主張してるの?

そもそも普通のキュー認めたら使用領域が動的に上下してる時点で
動的データ構造使ってるし、元のコンテナ使う話に対して全く反論できてない
これはもういちいち説明しなくていいよね?

俺が予想してたのは、チャンネル待ってデータ受け渡しとか
代替機構の反論だったんだけどなあ…

>という前提を表明しているから、いまさら「OSの内部で動的確保している(かもしれない)から藻前の論理は成立しない」というのは
そんな話はしていないよ
他の動的なリソースの取得開放はなぜ問題にしないと言ってるだけで

436 :デフォルトの名無しさん:2015/06/14(日) 16:16:46.65 ID:WgPnxzZM
>>434

>スレッドローカルな記憶として機能を果たす(実現可能ではある)ことは>>411には合意いただいたはずだが
>つまりグローバルかどうかはあんま論点じゃないっていうか、
いやいや、スレッドローカルと言った時点で、OS実装からの改善なんでしょ?

コストを気にするような話もしてたが、そんなオーバーヘッド気にするなら、
最初からコンテキストスイッチによるキャッシュミス自体抑制する
アドレスだけが重要で、静的な固定配列は無関係

それもわかってるというなら、本当何が言いたいのか意味不明だよ君は
いい加減固定配列の有用性主張する意味ないと認めろって

437 :デフォルトの名無しさん:2015/06/14(日) 16:19:05.08 ID:WgPnxzZM
ランタイムかOSかの違いとかの蛇足は無しでね

438 :デフォルトの名無しさん:2015/06/14(日) 16:52:50.71 ID:1gH69gu/
コンテキストスイッチを阻止したければ一つ重いスレッドを走らせとけばいいしな

439 :デフォルトの名無しさん:2015/06/14(日) 19:58:01.47 ID:MKNDd+A1
スレッドプールを自作するって嗜好の話じゃないん?
あちこちにライブラリ上がってるけど

440 :デフォルトの名無しさん:2015/06/14(日) 19:58:40.56 ID:b318KeG+
コンテナの話だったけどどっからか脱線した

441 :デフォルトの名無しさん:2015/06/14(日) 20:04:07.48 ID:MKNDd+A1
そうなんだ
もっともマルチスレッドのデザパタにはThread Poolパターンってのがあるから
それを見ればいくらでも知識があれば作れるけどな

442 :デフォルトの名無しさん:2015/06/14(日) 20:05:33.70 ID:MKNDd+A1
悪い
Worker Threadパターンだった
ま、同じ事っすね

443 :デフォルトの名無しさん:2015/06/14(日) 21:57:10.98 ID:HbVleRJY
>>440
>>382 の辺りだろ
malloc( ) 使わない理由はリークとかじゃなくて実行時間が読めないことが主な理由だけどね

444 :デフォルトの名無しさん:2015/06/14(日) 22:09:14.06 ID:Zy4rSU8x
>>327
scanfに渡すのは変数へのポインタ
printfに渡すのは値
値を渡す時にfloatはdoubleに変換されて渡されるというのがCの仕様

445 :デフォルトの名無しさん:2015/06/14(日) 22:11:38.53 ID:W5WL6w7T
可変長変数の引数では,ね

446 :デフォルトの名無しさん:2015/06/14(日) 23:00:23.99 ID:1AQPF2fE
なんでこんなへんてこりんな仕様になったのか誰か知ってる?

447 :デフォルトの名無しさん:2015/06/14(日) 23:09:40.56 ID:HbVleRJY
>>445
て言うか、プロトタイプ宣言がない時な

448 :デフォルトの名無しさん:2015/06/14(日) 23:28:37.74 ID:T5YGuTqy
scanfが%f(float)と%lf(double)を使い分けるんだから
可変引数渡しによってdoubleでしか受け取れないprintfは
%lfで書いときゃ問題ない

449 :デフォルトの名無しさん:2015/06/14(日) 23:35:17.91 ID:W5WL6w7T
>>448
C89 のライブラリは %lf をみて発狂しないの?

450 :デフォルトの名無しさん:2015/06/15(月) 00:33:04.73 ID:YsuCJToF
>>444
今はfloatはfloatのままだよ。
昔はfloatの演算器がなかったからdoubleに変換する必要があった。

451 :デフォルトの名無しさん:2015/06/15(月) 01:15:33.89 ID:5Knayh64
>>450
んなこたーない。可変長引数に与えた float は double に変換される。今も昔も。

452 :デフォルトの名無しさん:2015/06/15(月) 05:55:49.68 ID:J0LSdIE5
技術的な制約に由来していようが明文化した仕様は変わらない
変えるにはきちんと改訂手続きを踏まないとね

453 :デフォルトの名無しさん:2015/06/15(月) 07:48:43.11 ID:Hdxb2Sdn
明文化しから変わらないのではなく,
既存の資産が膨大だから混乱を避けるため変わらないんだ
改訂手続きなんてくそ食らえ改訂手続き自体を消してやる

454 :デフォルトの名無しさん:2015/06/15(月) 08:13:48.18 ID:TVVjQqmk
嫌ならオレオレC言語擬きを作ればいいだけ
手続きなんて要らないよ

455 :デフォルトの名無しさん:2015/06/15(月) 08:45:59.09 ID:eyGVuwU6
ランバダ式を関数に渡すのと
関数内部で自動変数にランバダ式を代入するのは
両方とも同じ条件でインライン化されて速度かわりませんよね

456 :デフォルトの名無しさん:2015/06/15(月) 09:12:48.00 ID:VOtJpgLS
渡した先でインライン展開されるわけじゃないから、変わるに決まってんだろ。アホか。

457 :デフォルトの名無しさん:2015/06/15(月) 10:52:03.97 ID:eyGVuwU6
いやいや、渡した先でインライン展開されるって
wikipediaにかいてあるし

458 :デフォルトの名無しさん:2015/06/15(月) 10:58:31.19 ID:eyGVuwU6
疑似コードも一応
template<typename T>auto a(T f){return f();}
auto b(){auto f=[](){1+1;};return f();}
int main() {
a([](){return 1+1;});
b();
return 0;
}

459 :デフォルトの名無しさん:2015/06/15(月) 11:19:49.74 ID:x90+VGun
>>458
それテンプレートじゃん
馬鹿なの?

460 :デフォルトの名無しさん:2015/06/15(月) 11:42:09.76 ID:x90+VGun
>>458はgcc -O2で展開どころかmainがreturn 0のみ
auto a(std::function<void(void)> f)で-O3でも展開無し(当たり前)

461 :デフォルトの名無しさん:2015/06/15(月) 11:53:05.26 ID:eyGVuwU6
自己解決しました
ありがとうございました

462 :デフォルトの名無しさん:2015/06/15(月) 11:53:49.36 ID:x90+VGun
うぜえw

463 :デフォルトの名無しさん:2015/06/15(月) 18:54:20.93 ID:FZwBA5EA
一体なにしに来たんだ…

464 :デフォルトの名無しさん:2015/06/15(月) 21:38:41.18 ID:H6WfKB6i
QZの自演失敗劇場

465 :デフォルトの名無しさん:2015/06/15(月) 22:02:45.73 ID:BrXxCZG0
ワロタ

466 :デフォルトの名無しさん:2015/06/15(月) 22:06:06.19 ID:E5lvOcDM
ラムダを受け取る関数はラムダの型を知ってなきゃいけないから
関数テンプレートの話してるに決まってるだろ
インライン展開は保証されないが期待はできる
std::functionみたいな特殊なもの持ち出して展開されないとか無いわ

467 :デフォルトの名無しさん:2015/06/15(月) 22:49:21.92 ID:x90+VGun
>>466
無茶言うなw
お前の無様すぎる言い訳のが無いわw

468 :デフォルトの名無しさん:2015/06/15(月) 22:52:27.40 ID:H6WfKB6i
QZ玄人ぶるなよ、入門レベルがこのスレにくるな

469 :デフォルトの名無しさん:2015/06/15(月) 23:01:09.17 ID:x90+VGun
同じ結論に至ったのに突っかかるとかどんだけ未練がましいんだよw

470 :デフォルトの名無しさん:2015/06/15(月) 23:04:10.15 ID:DssR2sqn
『それテンプレートじゃん 馬鹿なの?』
同じ?

471 :デフォルトの名無しさん:2015/06/15(月) 23:15:22.43 ID:x90+VGun
まだ何か不満でも?
「関数の引数」って一般化した物を提示してるのに
関数テンプレート出してるから馬鹿で間違いないだろ

472 :デフォルトの名無しさん:2015/06/15(月) 23:25:33.75 ID:5Knayh64
ラムダ式は関数テンプレートに渡すのが当然だと思ってた人とそうじゃない人が居た。
それだけのことなのになんでどっちが馬鹿とか言い出すのかね。

473 :デフォルトの名無しさん:2015/06/15(月) 23:27:34.69 ID:x90+VGun
std::functionは特殊だ!
僕ちゃんの周りではラムダは関数テンプレートしか使わないんだぞ!

お前の浅はかさなんて知らねえからな?
ラムダは関数ポインタ扱いで使えるし、特殊でも何でも無い

まだ対応微妙な14以降のコード出す方がよっぽど特殊だろ
とっととくたばれよ

474 :デフォルトの名無しさん:2015/06/16(火) 00:23:25.86 ID:7c92TlFO
QZが出入りする超絶キモスレッド

475 :デフォルトの名無しさん:2015/06/16(火) 00:47:25.15 ID:QVJ00m+D
どんなコードに落ちるのか想像もつかないコンパイライヤン
ローカル変数の値をキャプチャしたラムダ式をグローバル変数に代入して他の関数で使う、とか言う場合を考えると
ラムダ式がどういうコードになるのが正解かわからん…

本来キャプチャされるローカル変数の値が変わる度に異なる関数が次々生まれるのがラムダ式なイメージ

476 :デフォルトの名無しさん:2015/06/16(火) 00:54:17.06 ID:QVJ00m+D
ていうか単なるfunctorのシンタックスシュガー?
struct lambda {
int a, b;
lambda(int a_, int b_) : a(a_), b(b_) { }
int operator(int x, int y) { return a * x + b * y }
};
が、
lambda λ_1(1, 2);
lambda λ_1(3, 4);

  lambda g_λ = λ_1;
int z = g_λ(5, 6);
みたいな?

477 :デフォルトの名無しさん:2015/06/16(火) 00:55:00.62 ID:L5TA7aG8
>>475
ラムダは関数オブジェクトの糖衣構文なんだから
自分で関数オブジェクトを作ったことがあるならラムダがどんな構造になるかなんてすぐ分かる

478 :デフォルトの名無しさん:2015/06/16(火) 04:39:28.00 ID:2r+H5OFU
>>476
>int operator(int x, int y) { return a * x + b * y }

const抜けてるぞ。
int operator(int x, int y) const {…}

479 :デフォルトの名無しさん:2015/06/16(火) 04:51:06.36 ID:lLEFDpN4
()が抜けてる

480 :デフォルトの名無しさん:2015/06/16(火) 05:50:42.55 ID:mYK5pDR3
抜作どもw

481 :デフォルトの名無しさん:2015/06/17(水) 00:13:32.64 ID:gu9cN2gV
C++の文法の解説が日本語で1ページにまとまってるところない?
密度は↓このくらいで
http://mixi-inc.github.io/AndroidTraining/appendix/A.02.basic-java.html

482 :デフォルトの名無しさん:2015/06/17(水) 00:37:20.89 ID:vkecuc2n
>>481
https://ezoeryou.github.io/cpp-book/C++11-Syntax-and-Feature.xhtml

483 :デフォルトの名無しさん:2015/06/17(水) 00:55:30.89 ID:gu9cN2gV
>>482
thx

484 :デフォルトの名無しさん:2015/06/17(水) 01:20:25.67 ID:0PWcUq1e
template <template<typename *> class T>
class Foo{
//省略
};

ってどのように使うのでしょうか?

485 :デフォルトの名無しさん:2015/06/17(水) 01:21:33.18 ID:RA9bcg/G
どのようにも使えません

486 :デフォルトの名無しさん:2015/06/18(木) 17:43:04.52 ID:DV39n0l/
#include <iostream>
using namespace std;
template<typename T>
struct X{
auto f(){return 1;};
};
template<>
auto X<float>::f(){return 2;}
int main() {
X<int> x;
X<float> y;
cout<<x.f()<<y.f()<<endl;
return 0;
}
こちらのコードではクラステンプレートXを特殊化しているのに
なぜfはメンバー関数テンプレートと呼ばれるのですか?
クラステンプレートの特殊化と何が違うのですか?

487 :デフォルトの名無しさん:2015/06/18(木) 18:26:20.02 ID:NvI2h5CK
>>486
誰がそう呼んでいるのか知らないけどfはテンプレートではない
何故呼ばれるのかと言ったら、ソイツが無知だからじゃね

488 :デフォルトの名無しさん:2015/06/18(木) 18:52:32.75 ID:DV39n0l/
クラステンプレートのメンバー関数の特殊化ですね
長い名前だけど使っている人いるんですかね

489 :デフォルトの名無しさん:2015/06/18(木) 19:16:02.50 ID:sdOCle5m
あれっ、できるんだっけ?

490 :デフォルトの名無しさん:2015/06/18(木) 21:24:54.26 ID:nMAYQ0om
>>489
特殊化でのautoの使い方が気になったので調べたが問題ないようだ

491 :デフォルトの名無しさん:2015/06/19(金) 01:37:40.17 ID:1zCNvxAR
autoさん最近大活躍ですな
超絶影薄かったのに
staticさんが嫉妬しそうw

492 :デフォルトの名無しさん:2015/06/19(金) 01:39:08.72 ID:KyhneXaM
そっちのautoさんかよ

493 :デフォルトの名無しさん:2015/06/19(金) 01:58:10.24 ID:ptPL9g7S
autoさんはしかし都合よく眠ってたもんだよな
こんな良い感じの予約語なかなか後付けできないじゃん。

494 :デフォルトの名無しさん:2015/06/19(金) 02:07:19.61 ID:bC41ipaW
registerさんは有効活用できませんかね…

495 :デフォルトの名無しさん:2015/06/19(金) 12:36:33.51 ID:NSNd0Gwm
クラスAがクラスBのインスタンスbの参照をconst付きで持つことは出来ませんか?
やりたいことはこんな感じです
class A {
public:
A(const B& b) { inst = b };
const B& inst;
};

496 :デフォルトの名無しさん:2015/06/19(金) 12:39:45.85 ID:KyhneXaM
できるべ
class A {
public:
A(const B& b):inst(b) { }
const B& inst;
};

497 :デフォルトの名無しさん:2015/06/19(金) 13:25:23.71 ID:wLB8DELV
.netのinitonly/readonlyみたいな機能が欲しいよね。

498 :デフォルトの名無しさん:2015/06/19(金) 13:48:14.08 ID:e+GzY/Uc
>>497
constで何か不満が?

499 :デフォルトの名無しさん:2015/06/19(金) 20:22:03.29 ID:9HLt/WoY
constの逆が欲しい
デフォで暗黙const
明示的にmutable

500 :デフォルトの名無しさん:2015/06/20(土) 00:09:36.13 ID:gzoCELj1
constっていらなくね?
つかつかったときねー

501 :デフォルトの名無しさん:2015/06/20(土) 00:25:42.13 ID:aEgncsrl
constが要らないとは……
凄まじいまでの把握能力とそれを駆使できる頭があるか、痛い目にあったことがないかだな。

502 :デフォルトの名無しさん:2015/06/20(土) 00:28:33.87 ID:qQ/qlsDi
別に無くてもそれほど困らないな
むしろどこに使うんだ

503 :デフォルトの名無しさん:2015/06/20(土) 00:32:53.37 ID:fYXXUti6
引数でconst参照渡しとか、クラスのconstメンバ関数とか

定数は#defineつかわずに、static constにしたりとか

504 :デフォルトの名無しさん:2015/06/20(土) 00:35:38.93 ID:tDc6RR32
俺はソース把握のためにもないと困るけど、初心者は無理に使おうとすると色々トラブルから使わなくていいと思う

505 :デフォルトの名無しさん:2015/06/20(土) 00:36:27.79 ID:T5Odsm1P
初心者ほど使うべき

506 :デフォルトの名無しさん:2015/06/20(土) 00:37:51.32 ID:qQ/qlsDi
>>503
全部constなしにしたらよくね?
あと「読みとり専用」「スレッドセーフ」と紛らわしいからconstを定数の意味で使うなよ
constexprを使うべきじゃないの

507 :デフォルトの名無しさん:2015/06/20(土) 00:41:28.33 ID:aEgncsrl
ソース把握の補助は当然というか、二次的なメリットであって、もっとあるだろうconst……
constないC++とか黒魔術どころか禁術になるとおもうわ……

508 :デフォルトの名無しさん:2015/06/20(土) 00:45:27.45 ID:+RNOOPsg
>>506
おまえのアタマだけでやってくれ

509 :デフォルトの名無しさん:2015/06/20(土) 01:39:28.20 ID:pT8rjVDV
static const char *禿げ = "毛";
// コイツを定数と思って使ってる奴は早くいなくなってほしい

510 :デフォルトの名無しさん:2015/06/20(土) 01:40:56.32 ID:ne/bSAAV
int以外は違うだろ

511 :デフォルトの名無しさん:2015/06/20(土) 01:46:41.44 ID:T5Odsm1P
short型ってなんの為にあるの?

512 :デフォルトの名無しさん:2015/06/20(土) 01:48:07.35 ID:4UsBBAlQ
charより大きくてintより小さい型を使いたいとき

513 :デフォルトの名無しさん:2015/06/20(土) 01:54:00.15 ID:pT8rjVDV
ボーイッシュなタイプが好きなとき

514 :デフォルトの名無しさん:2015/06/20(土) 02:04:28.26 ID:+RNOOPsg
>>511
君のような息子のサイズにピッタリ一致させるためさ

515 :デフォルトの名無しさん:2015/06/20(土) 03:12:00.09 ID:bt3Cwyj8
1つのクラスに俺は何回constを書けばいいんだ、
っていうのは確かに思わなくはない

516 :デフォルトの名無しさん:2015/06/20(土) 05:42:25.23 ID:AvDeDmf2
無くても他の言語で困ったという話を聞いたことがない

517 :デフォルトの名無しさん:2015/06/20(土) 05:50:36.50 ID:ne/bSAAV
あって困ったという話も聞かない

518 :デフォルトの名無しさん:2015/06/20(土) 05:57:59.45 ID:plt3dVUx
二つ上のレスも読めない馬鹿が愛用するのがconst

519 :デフォルトの名無しさん:2015/06/20(土) 07:36:03.84 ID:YLktWXtl
>>506
C++にスレッドセーフを示すキーワードなんて無いのに何と紛らわしいんだ?

>>518
二つ上って >>516 か?それだけ使ってるって事じゃないのか。
使いまくるからもっと指定しやすい形に出来ないか(privateとかみたいにここからここまでconstみたいな?)というポジティブな意見に見えるわ

520 :デフォルトの名無しさん:2015/06/20(土) 07:52:56.69 ID:ZerbeNuG
>>511
short型を使ったソースを直すのが面倒な時にそのまま使えて便利だから

521 :デフォルトの名無しさん:2015/06/20(土) 09:10:54.91 ID:IRI2lmd1
constexprじゃなくてconstか...

関数の引数宣言ではconst付けろ。そうしないとconst変数をその関数に渡せないじゃん。
 ←最初はこう思う

しばらくすると static const や constexpr 以外のconstに存在意義を見出せなくなるかも。

522 :デフォルトの名無しさん:2015/06/20(土) 09:15:17.90 ID:ne/bSAAV
>関数の引数宣言ではconst付けろ。そうしないとconst変数をその関数に渡せないじゃん。
おまえは一体何を言ってるんだ?

523 :デフォルトの名無しさん:2015/06/20(土) 09:21:52.31 ID:PKKtbZWy
void funcA(type& arg); // not const argument
void funcB(const type& arg); // const

const type inst;
funcB(inst); // OK
funcA(inst); // error

524 :デフォルトの名無しさん:2015/06/20(土) 09:22:58.54 ID:En0LaAzs
>>519
C++の標準ライブラリはconstを単なる不変でなく
スレッドセーフの意で使っているのは有名な話。
未だに03しか使ってないんだったら知らんが

525 :デフォルトの名無しさん:2015/06/20(土) 09:24:52.01 ID:IRI2lmd1
>>522
なにか理解できない点でも?

526 :デフォルトの名無しさん:2015/06/20(土) 09:27:43.34 ID:ne/bSAAV
C++はデフォがコピーなんだから参照じゃなきゃ渡せる

527 :デフォルトの名無しさん:2015/06/20(土) 09:39:48.30 ID:IRI2lmd1
ほう、「参照またはポインタの場合は・・・」等と限定しないと意図がわからないと言うんだな?
なるほどなるほど。

528 :デフォルトの名無しさん:2015/06/20(土) 09:42:22.29 ID:ne/bSAAV
コピーの場合const書かなくても渡せるって知らなかったんだな
言い訳はみっともないよ

529 :デフォルトの名無しさん:2015/06/20(土) 09:48:36.36 ID:IRI2lmd1
おまえつまらない。
C++の技術的におもしろい話題ができないやつは来なくていいよ。

530 :デフォルトの名無しさん:2015/06/20(土) 10:37:38.93 ID:HjWjZvmN
>>524
不変の関数呼び出し=そのオブジェクトに対する読み込み操作 だけ行うのであればスレッドセーフであるというのはSGIの時代のSTLから変わらんよ

531 :デフォルトの名無しさん:2015/06/20(土) 11:03:18.64 ID:TpIghoYw
>>530
だからC++11でそうではなくなっているのだが。

532 :デフォルトの名無しさん:2015/06/20(土) 11:09:08.70 ID:TpIghoYw
規格の17.6.5.9かな。
この解釈については排他制御が必要になったと
ハーブサッターやスコットメイヤーがふれ回っている。

533 :デフォルトの名無しさん:2015/06/20(土) 11:23:21.95 ID:IRI2lmd1
Library-wide requirements?

534 :デフォルトの名無しさん:2015/06/20(土) 11:35:43.67 ID:holBTYBG
void func(const int& a, int& b)
{
std::vector<int> c(a);
std::thread d([b](){ ++b; });
for(int i = 0; i < a; ++i) c[i] = 0;
d.join();
}

535 :デフォルトの名無しさん:2015/06/20(土) 11:35:43.92 ID:pABxzJBl
コピーできないクラスもあるから
参照じゃなきゃという前提がおかしい

536 :デフォルトの名無しさん:2015/06/20(土) 11:39:16.97 ID:pABxzJBl
>>534
>[b](){ ++b; }
コンパイルエラーじゃね?
[b]() mutable { ++b; }
[&b]() { ++b; }

537 :デフォルトの名無しさん:2015/06/20(土) 11:41:03.08 ID:ne/bSAAV
それを言ったらconst変数をその関数に渡せないという前提がおかしい

538 :デフォルトの名無しさん:2015/06/20(土) 12:23:39.25 ID:HjWjZvmN
>>531
何言ってんのかわからないから

http://yohhoy.hatenablog.jp/entry/2013/12/15/204116

これ読んで間違ってると思う所挙げてくれ

539 :デフォルトの名無しさん:2015/06/20(土) 13:16:06.09 ID:TpIghoYw
>>538
『C++11における重要な(そして地味な)スレッドサポートとして、C++標準ライブラリ提供クラスのデータ競合に関する基本ルールが明確化されました。』
これが誤り。
明確化それたのではなく『このように変更されました』が正しい。

540 :デフォルトの名無しさん:2015/06/20(土) 13:18:47.22 ID:IRI2lmd1
>>537
おまえさっきからひとりでレベルの低いこと言ってるが
他人が話題にしていることが何だかわかっていないだろ。
だれもコピー渡しの事なんか眼中にないんだよ。

541 :デフォルトの名無しさん:2015/06/20(土) 13:56:46.61 ID:gzoCELj1
C++を知るためのお勧めサイトおしえて
どこもかしこも同じことばっかり・・・
ただ単に機能を紹介してるだけで、どう実用的にしようするかは全く書いていない
そんなの本みりゃかいてあるじゃん

それを得意げにwwwにあげなくても・・・

542 :デフォルトの名無しさん:2015/06/20(土) 15:19:04.38 ID:2OynkrJD
>>540
突っ込まれて恥ずかしいのはわかるから、もうでてくるなよ...

543 :デフォルトの名無しさん:2015/06/20(土) 15:28:28.80 ID:holBTYBG
>>536
だね
サーセン

544 :デフォルトの名無しさん:2015/06/20(土) 15:33:32.28 ID:HjWjZvmN
>>539
だからどう変更があったんだ

545 :デフォルトの名無しさん:2015/06/20(土) 16:53:31.26 ID:3gVaqkMh
constは素晴らしい
C#最大の失敗はconst引数とかconstメンバ関数がないことだと思う

546 :デフォルトの名無しさん:2015/06/20(土) 17:05:24.91 ID:q1W9QYhz
引数constの話題で「値渡しなら」って言い出すのも相当空気読めないやつだけどな。

547 :デフォルトの名無しさん:2015/06/20(土) 17:12:26.20 ID:pT8rjVDV
>>545
C#はデータ構造をイミュータブルに設計するのが基本なので
そもそもconstをあまり必要としない。
しかしC上がりのC#プログラマはなんでもかんでもミュータブルに設計しちゃうので
あまり恩恵に与れない。

548 :デフォルトの名無しさん:2015/06/20(土) 17:17:29.57 ID:IRI2lmd1
>>542

なんだかよくわかんねーけどさ、もともとの俺の発言はこうだ。
>関数の引数宣言ではconst付けろ。そうしないとconst変数をその関数に渡せないじゃん。

これのどこに問題があるんだ?

func(T& x);
この関数に const T x; を渡そうとしても渡せない。
funcがxを変更しないなら忘れずにconstを付けるべきだ、と言ってる。
なんか理解できない事でもあるのか?

549 :デフォルトの名無しさん:2015/06/20(土) 17:38:26.37 ID:t6zALFPs
もともとconstにしなきゃ問題なし

550 :デフォルトの名無しさん:2015/06/20(土) 17:52:16.02 ID:x3hvss4r
>>548
> なんか理解できない事でもあるのか?
こんなことにしつこく粘着するお前の神経

551 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/20(土) 17:52:29.38 ID:RdU0NHX6
#define const /*empty*/

552 :デフォルトの名無しさん:2015/06/20(土) 18:05:42.87 ID:q1W9QYhz
>>549
なんかのAPIにstd::stringの c_str()渡したいとかある。

553 :デフォルトの名無しさん:2015/06/20(土) 18:19:52.91 ID:aEgncsrl
インターフェイスとしてのconstと、定数としてのconstが入り交じって議論してるから、話がこじれている気がする。あと要らない派もコンパイル時評価で代用するって言ってるのもポイント。

確かに単なる定数としてならconstは無くてもいい、constexprの方がいいと思う。
でもインターフェイスとしてのconstは絶対必要だと思う。

ひとくくりに「constいらない」って言われたらそりゃ否定するよ。

554 :デフォルトの名無しさん:2015/06/20(土) 18:25:47.87 ID:37rStOxv
コードを書くなんてダサいね
俺はメタプログラマーだから
コードはコンピューターに書かせる

555 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/20(土) 18:28:48.12 ID:RdU0NHX6
>>554
メタプログラミングに何使ってるの? Haskell? OCaml?

556 :デフォルトの名無しさん:2015/06/20(土) 18:28:58.23 ID:f7mGspD+
メタプログラムは誰が書いてるの?

557 :デフォルトの名無しさん:2015/06/20(土) 18:34:51.64 ID:YRpaqalD
>>553
インターフェースとしてのconstなんて
  f(X *px /*pxは読みとりのみ*/)
でよくない?
C#とかJavaScriptはそれで特に困ってないし
CでもUnixのexecvとかそんな感じでは

558 :デフォルトの名無しさん:2015/06/20(土) 18:38:31.66 ID:37rStOxv
メタプログラミングはヘッダーファイルにしか
書かないということだ
後はコンパイラーが自動生成してくれる

559 :デフォルトの名無しさん:2015/06/20(土) 18:56:55.48 ID:aEgncsrl
>>557
execvは分からないけど、それらの言語はポインタがないとか、ガベージコレクタあるとかで安全だからでは。

560 :デフォルトの名無しさん:2015/06/20(土) 19:06:44.35 ID:AGMwCtTp
>>541
GotW

561 :デフォルトの名無しさん:2015/06/20(土) 20:09:50.98 ID:gzoCELj1
メタプログラミングってコンパイル時に決定してることしか計算できないよね
2つ数字の和を計算する場合、その2つの数はマジックナンバーしか受け付けない

今時性的なプログラミングはNGだろ

562 :デフォルトの名無しさん:2015/06/20(土) 20:21:36.07 ID:GbAOoZY+
NGというか実用性の無いオナニー
実行して計算すればいいことを「コンパイル時にここまでできた!」
と糞コード書いて自己満足しているだけ

563 :デフォルトの名無しさん:2015/06/20(土) 20:26:11.10 ID:k98nJLvm
コンパイル時に決定してる?
そんなことってあるか?

564 :デフォルトの名無しさん:2015/06/20(土) 20:28:13.00 ID:n4iVUeXj
バカは黙ってればいいのに

565 :デフォルトの名無しさん:2015/06/20(土) 20:32:09.65 ID:m4bEx834
じゃあ、なんでお前は書き込みしてんだ?

566 :デフォルトの名無しさん:2015/06/20(土) 20:34:41.02 ID:jyvv71oT
メタプログラミングは、馬鹿のために優秀な奴が、ベースを作ってあげるもの。

567 :デフォルトの名無しさん:2015/06/20(土) 20:40:03.73 ID:DFleiKMb
メタプログラミングしてる奴は皆からオナニー野郎だとさげすまされているのに
本人は他人に何かしてやったつもり(ドャッ!)なのか
どうしようもない奴らだな。
テンプレートでコンパイル時ソートでもしてろ

568 :デフォルトの名無しさん:2015/06/20(土) 21:02:02.86 ID:q1W9QYhz
>>563
型に関する多くのことはコンパイル時に決定している。これは有用。
値に関しては賛否両論あるかもしれん。

569 :デフォルトの名無しさん:2015/06/20(土) 21:02:39.16 ID:holBTYBG
色んな「定数」が、どのように決まっていることなのかを
#define よりも賢くできるようにする研究を素直に喜べないのか

570 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/20(土) 21:06:57.54 ID:RdU0NHX6
みんなC++やめて早く安全快適なJavaへ行こうぜ!

Java to C++ converter
https://code.google.com/a/eclipselabs.org/p/j2c/

571 :デフォルトの名無しさん:2015/06/20(土) 21:07:39.32 ID:2FwA5nNN
defineの定数定義みたいな20年くらい前に廃れたテクニックを
いまだに使用してるなんて前提で
レーゾーンデートルを力説されても…

572 :デフォルトの名無しさん:2015/06/20(土) 21:36:30.88 ID:gzoCELj1
void test()
{
 char buf[1024];//A
 for(int i=0;i< 10000;++i){
  char buf[1024];//B
 }
}

testが呼ばれたとき
Aの箇所だとbufは1回しかスタックにつまれない
Bの箇所だとbufは10000回もスタックにつまれる
ってあってますか?

573 :デフォルトの名無しさん:2015/06/20(土) 21:50:48.82 ID:IhPqekqV
近頃のコンパイラは複雑な最適化をするから、単純な見積もりは外れる可能性が高い。

574 :デフォルトの名無しさん:2015/06/20(土) 21:56:55.68 ID:holBTYBG
>>570
あばよ
今生の別れだ

575 :デフォルトの名無しさん:2015/06/20(土) 21:57:51.96 ID:holBTYBG
>>572
汗嫁
話はそれからだ

576 :デフォルトの名無しさん:2015/06/20(土) 22:03:07.93 ID:PEDlQMiL
ここって自分がC++コンパイラより頭がいいと思いいこんでる人しか
質問に来てないみたいな気がするよね?(´・ω・`)

577 :デフォルトの名無しさん:2015/06/20(土) 22:04:32.95 ID:j/9gGB53
auto test()
{
 A buf[10];// 1
 for(int i=0;i< 1000;++i){
  A buf[10]; // 2
 }
}

1の場所でAのコンストラクターは10回呼ばれる
2の場所はループの度にコンストラクターが10回呼ばれる
スタックなどというプログラミング言語の下の実装は
どこにも標準化されていのでコンパイラー実装次第

578 :デフォルトの名無しさん:2015/06/20(土) 22:12:35.35 ID:holBTYBG
実装の標準化ねえ。
辛うじてstack unwindingが出てくるくらいか?

579 ::2015/06/20(土) 22:16:11.77 ID:80ZR1dJo
>>573
最近のコンパイラ賢いから
>>572だと最適化でBも1回スタックになるだろうな

580 :デフォルトの名無しさん:2015/06/20(土) 22:20:32.57 ID:80ZR1dJo
ひょっとしたら,>>572は意味無し関数と判断されて
関数生成されないんじゃないのか

581 :デフォルトの名無しさん:2015/06/20(土) 22:29:44.83 ID:TpIghoYw
>>580
外部リンケージを持つ関数は
ODR使用の可能性が否定できないから
生成はされるのでは。

582 :デフォルトの名無しさん:2015/06/20(土) 22:39:25.70 ID:80ZR1dJo
>>581
そうだな。

583 :デフォルトの名無しさん:2015/06/20(土) 23:29:27.41 ID:B32smHlf
ODRってなんじゃらほい?副作用?
>>577のでAのコンストラクタ・デストラクタとも
- インラインで外部リンケージな呼び出しを含まない
- まるきり定義無し
のどちらかだとすると
副作用が有り得ない=testが在っても無くてもアルゴリズムは等価、
としてtestごと消え得るのでは…

584 :デフォルトの名無しさん:2015/06/20(土) 23:34:51.53 ID:+RNOOPsg
>>548
const_cast<T>(x) で渡せるだろトーシロウ

585 :デフォルトの名無しさん:2015/06/20(土) 23:46:02.28 ID:B32smHlf
ていうか>>577のスタックの段数について言うと、
ループの内側のbuf[10]は、「まずは」(最適化は後で考えるとして)、ループ1回回るたびに
要素10個それぞれコンストラクタが呼ばれて構築され、さらにデストラクタが呼ばれて破棄される、と解釈される
ということは、ループk回目でbuf[0..9]が使った領域は、ループk+1回目の開始時時点では破棄済みで誰も使っていないから
またbuf[0..9]のインスタンスが構築できるから、ループ回数だけスタックを消費していくような実装には
なかなかお目にかかれないはず…

586 :デフォルトの名無しさん:2015/06/21(日) 00:27:03.41 ID:QrPate9Z
>>584
const_cast<T&>(x) の間違いじゃない?

587 :デフォルトの名無しさん:2015/06/21(日) 00:32:29.47 ID:9rSSXz+5
const_cast<T> で動くのはVisual C++の自称「拡張機能」じゃないの。
/Zaオプション付けると右辺値扱いされてコンパイルエラーになると予想。

588 :デフォルトの名無しさん:2015/06/21(日) 00:38:42.97 ID:QrPate9Z
>>584

>const_cast<T>(x) で渡せるだろ

全く理由になっていない。
なんで渡す側がそんな醜いキャストなんかしなきゃならん。
責任はfuncの作者にある。忘れずにconstを付けるべきだ。

589 :デフォルトの名無しさん:2015/06/21(日) 00:51:49.35 ID:9rSSXz+5
>>583
testは消えないよ。
>>577をコンパイルした後で別のファイルに
----
extern void test();
struct Z {
 Z() {test();}
};
Z global_obj;
----
なんてコードがあるかも知れないから
リンクエラーにならないようtestの実体が必要。

ちなみに
auto test() {}
だと別の翻訳単位で戻り値を前方宣言できないから
消えるかも知れない。

590 :デフォルトの名無しさん:2015/06/21(日) 00:53:45.10 ID:9rSSXz+5
間違えた。
>>572のtest()は消えないけど>>577は消える。
忘れて。

591 :デフォルトの名無しさん:2015/06/21(日) 01:39:08.58 ID:RBHwsW1q
funcの引数にconst付けるべきというか、付けなきゃ駄目っしょ
C++じゃなくてCの頃からそう
あえてconstを付ける理由として挙げてるのも、論争してるのも謎すぎる

592 :デフォルトの名無しさん:2015/06/21(日) 01:49:44.57 ID:RBHwsW1q
strcpy (const char* dst, const char* src)じゃ困っしょ
事前のコピーはconstと無関係だし、許されるのは非constを渡す方向だけ

593 :デフォルトの名無しさん:2015/06/21(日) 01:52:07.04 ID:qbGsUBw5
>>591
紛らわしい言い方の意見だね?(´・ω・`)
constが付いた型はconstが付いていない型とは「違う型」なんだから
そもそも「付いた」という言い方が紛らわしいんだけどね?(´・ω・`)

594 :デフォルトの名無しさん:2015/06/21(日) 02:00:06.66 ID:MnJNovYw
Cの頃からだって?
KRにはそんなものマトモに無かったし
Cは今でもconstのせいでstrchrが糞仕様じゃねーか

595 :デフォルトの名無しさん:2015/06/21(日) 02:06:24.20 ID:k0Gw61eH
>>591
たとえば
int getlength(char* str);

こんなのにconstつけてなになる?
長さを取得する関数ってことは誰が見ても分かるし、
呼び出すほうも、関数を作るほうもstrの内容を変更しないことはあたりまえ

596 :デフォルトの名無しさん:2015/06/21(日) 02:17:28.34 ID:8uauNRnw
あたりまえで全部解決すればバグなんて出ないよ^^

597 :デフォルトの名無しさん:2015/06/21(日) 02:19:41.73 ID:YnY7GEM9
>>595
いや、const付けろよ
そのケースで付けないで良い理由なんてないから

598 :デフォルトの名無しさん:2015/06/21(日) 02:20:15.27 ID:g/VxZAez
>>595
それだと const char * の長さが測れなくなる

599 :デフォルトの名無しさん:2015/06/21(日) 02:20:45.69 ID:Qd0dXrIr
int main ( int argc, char * *argv ) {}

「付けるべき」「付けなきゃ駄目」と珍妙な主張する人たちは
メイン関数のargvをどう思ってるわけ?
付けたらバグが減るという幻想は自分の妄想の中だけにしてね

600 :デフォルトの名無しさん:2015/06/21(日) 02:24:26.63 ID:YnY7GEM9
どうしようもないアホだな

601 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/21(日) 02:24:58.84 ID:szDYpocA
当たり前や常識が通用しないコンピューティングだってある。
番兵を知らないかね。文字検索のために書き換えることもある。
constを使うルールは信頼性に影響する。

602 :デフォルトの名無しさん:2015/06/21(日) 02:34:54.98 ID:Qd0dXrIr
>文字検索のために書き換えることもある

へー、じゃあどうしてC++のstrchr(char const *, int)
は返り値がchar const *なのかね
思いつきで言い訳するのは良くないぜ

まあ言い返せなくなると
>どうしようもないアホだな
とファビョるだけの朝鮮人たちには難しかったかな

603 :デフォルトの名無しさん:2015/06/21(日) 02:35:46.42 ID:qbGsUBw5
やっぱり、なんかみんな勘違いしてると思うよ?(´・ω・`)
これこれだから付けなきゃいけないとか、こうだから付けなくていい
そういう議論は無意味なんだよ?(´・ω・`)

>>593 でも言ったけど
> constが付いた型はconstが付いていない型とは「違う型」なんだから
そういう型に「なるかならないか」だけなんだよ?(´・ω・`)

604 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/21(日) 02:37:14.74 ID:szDYpocA
覚えておけ、constを適切に使っていないソースはゴミ箱行きだ。

605 :デフォルトの名無しさん:2015/06/21(日) 02:37:42.08 ID:Qd0dXrIr
↑ まさにファビョった朝鮮人!!

606 :デフォルトの名無しさん:2015/06/21(日) 02:41:53.19 ID:YnY7GEM9
>>602
ファビヨって意味不明の朝鮮人認定してるのはお前という池沼

607 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/21(日) 02:43:17.53 ID:szDYpocA
こいつ番兵を知らないのか

608 :デフォルトの名無しさん:2015/06/21(日) 02:47:44.87 ID:YnY7GEM9
「メイン関数のargvをどう思ってるわけ? 」w
「じゃあどうしてC++のstrchr(char const *, int)は返り値がchar const *なのかね 」w

609 :デフォルトの名無しさん:2015/06/21(日) 02:51:53.95 ID:Qd0dXrIr
>>604
>constを適切に使っていないソースはゴミ箱行きだ

ああ、君のプログラムのmain関数のことだねw

>>608
とうとう内容で言い返すことができなくなって
「w」を付けただけのオウム返しレスになっちゃったか 哀れ

610 :デフォルトの名無しさん:2015/06/21(日) 02:54:35.69 ID:YnY7GEM9
>>609
内容?どこまで笑わせる気だよ池沼
お前と議論するような内容なんて無いよ
ただただお前がバカなだけ
バカすぎて自覚できないだろうけど

611 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/21(日) 02:55:10.96 ID:szDYpocA
argvは書き換え可能。

612 :片山博文MZ ◆T6xkBnTXz7B0 :2015/06/21(日) 02:57:12.96 ID:szDYpocA
そんなにC++が嫌いならJava使いなさい。
JavaからC++へ普通に変換できますよ。

613 :デフォルトの名無しさん:2015/06/21(日) 02:59:40.34 ID:g/VxZAez
サックリと柔軟に捉えられないヤツはもう少し高級なの使っとけ

614 :デフォルトの名無しさん:2015/06/21(日) 03:07:20.90 ID:fO5JAwrS
究極的にはconstもprivateも設計思想を明確にするためのものだからなあ
自分は100%設計思想を把握していて忘れることもないし
うっかりコードを描き違えることもない、そういう自信があるなら
constなしpublicでいいんじゃなかろうか
俺はしょっちゅう忘れるしうっかりコードも間違えるから使うけど

615 :デフォルトの名無しさん:2015/06/21(日) 03:23:51.57 ID:YnY7GEM9
ちなみにunix系でargvを書き換えるとpsの出力が変わる
これを利用して引数が丸見えになるのを避けるための対策を行うのは割と一般的な手法
プログラム名(argv[0])も変えられる

616 :デフォルトの名無しさん:2015/06/21(日) 03:26:29.86 ID:V01ss4k7
アホですか?
argvをどんな値にしてもそんなことは起こらねーよ。

617 :デフォルトの名無しさん:2015/06/21(日) 03:37:21.95 ID:Qd0dXrIr
char * p = "" ; //const char[1]でchar *を初期化

こんな文法が許されてしまう言語なのに
constに妙な思想を夢見てソースをconstだらけにするのは
マジ勘弁ですよ

618 :デフォルトの名無しさん:2015/06/21(日) 03:40:59.28 ID:wi8ruPuE
p[0] = 'a'なんてしたら落ちるからconst付けてんだよ
そんなことも分からないのか

619 :デフォルトの名無しさん:2015/06/21(日) 03:47:47.46 ID:YnY7GEM9
>>616
そりゃargv=なんとか
ってしても変わんねーよw
渡されたアドレスの内容を書き換えるんだよ
もちろん書き換えサイズはオーバーしないようにね
やってみ

620 :デフォルトの名無しさん:2015/06/21(日) 03:51:03.94 ID:k0Gw61eH
>>598
オーバーロード、キャスト
いくらでもやりようはあるよ

勉強しろ

621 :デフォルトの名無しさん:2015/06/21(日) 03:55:42.41 ID:VBnOEKb6
>>620はわざわざ
int getlength(char* str);

int getlength(const char* str);
両方作るのかwwwwwwwwwwww
それとも
getlength(const_cast<char*>(str));
ってすんのwwwwwwwwwwwwwww
int getlength(const char* str);
一つ作れば十分なのにバカなんだなwwwwwwwwwwwww

622 :デフォルトの名無しさん:2015/06/21(日) 04:08:35.70 ID:fO5JAwrS
非const派はそもそもconst char* 型を使わないということだろう
まあそれはともかく、もっと抽象的なクラスAで
int getlength(A& a)
ってあったら、これは長さを返すついでになにか
内部状態も変更するのかな、と推測してしまう
int getlength(const A& a)
ならAクラスから推測される長さを返す関数なんだと理解できる

623 :デフォルトの名無しさん:2015/06/21(日) 04:55:53.89 ID:k0Gw61eH
getlengthの中で
A& aaa = const_cast<A>(a);
とすればおまえさんの推測はなんの意味も無いわけだが・・・

624 :デフォルトの名無しさん:2015/06/21(日) 04:57:03.71 ID:k0Gw61eH
&がぬけた

625 :デフォルトの名無しさん:2015/06/21(日) 05:13:55.03 ID:pgtV211P
そう思ってしまう、連想するってことだろ。
実装は知らされないことが多いし。

626 :デフォルトの名無しさん:2015/06/21(日) 06:29:16.54 ID:QGPUzNZz
const_castは頑なにconst不要論を掲げる ID:k0Gw61eH みたいなやつの為に存在するのでそいつらが一掃されたら不要だし使わない
お前みたいなのがいるせいでconst_castがあるってことをまず自覚しろ

627 :デフォルトの名無しさん:2015/06/21(日) 06:38:32.39 ID:k0Gw61eH
>>625
そんなライブラリよく使えるな・・・
constがどうこう言うより、よっぽど危険だろ

勝手に上司に死ね、アフォ、カスってメールを送信するような
実装かもしれんし

628 :デフォルトの名無しさん:2015/06/21(日) 07:38:59.09 ID:YrgsgPjW
#include <iostream>
using namespace std;
auto f(int b,...){return b;};

int main() {
cout<<f(1,2,3,4)<<endl;
return 0;
}
...は再帰も出来ないし使いどころがわからないのですが
いったい何の役に立つのですか?

629 :デフォルトの名無しさん:2015/06/21(日) 08:14:09.13 ID:nUm+UHVV
レスの消費に役立ってます

630 :デフォルトの名無しさん:2015/06/21(日) 08:18:47.57 ID:QrPate9Z
>>623
あんたの世界では、文字列の長さを知りたくてgetlengthを使うときは
getlengthの実装を見て、書き換えてないことを確認してからconst_castして渡すか、
わざわざコピーを取ってから渡すか、
どっちかしかなさそうだな。

631 :デフォルトの名無しさん:2015/06/21(日) 08:23:02.09 ID:TOFaYzkd
このスレ、本当に不可解な伸び方するよな

632 :デフォルトの名無しさん:2015/06/21(日) 08:36:53.52 ID:fO5JAwrS
>>623
それをいったら
>>595
はそれどころじゃないなw

633 :デフォルトの名無しさん:2015/06/21(日) 09:15:27.34 ID:2Lp/obQP
const_castは複雑な初期化が必要なconstメンバー
をコンストラクタ内で初期化するのに必要。
constを使っていないライブラリ関数を呼び出すのに必要。

634 : ◆QZaw55cn4c :2015/06/21(日) 09:17:31.61 ID:1IBkKjPW
ここまできても char const * const p = "abc"; がない件について

635 :デフォルトの名無しさん:2015/06/21(日) 09:19:44.77 ID:9rSSXz+5
そりゃコンパイルエラーだからな

636 :デフォルトの名無しさん:2015/06/21(日) 09:21:31.30 ID:9rSSXz+5
おっと目が節穴だった
const信者の書きそうな糞コードだな
constexpr char const * const p = "abc";
の方が長くて好みだろ

637 :デフォルトの名無しさん:2015/06/21(日) 09:51:22.98 ID:V01ss4k7
>>619
ドヤ顔で説明した↓は引っ込めるのか?
> ちなみにunix系でargvを書き換えるとpsの出力が変わる

638 :デフォルトの名無しさん:2015/06/21(日) 09:52:07.51 ID:/vdMr5S0
組み込み用途だとグローバル変数の割当先をきちんと管理したいからconstは欲しいconst有理
いま単に
int g_foo = 1000;    // (A)
と書いたとしたら、ROMに値1000のための領域が1ワード取られて、さらにRAMにも変数g_foo用に1ワード取られて、
さらにブートストラップコードに値1000をg_fooに書き込む(初期化)処理が発生する。これが
const foo = 1000; // (B)
なんなら値1000のための領域がROMに取られるだけで済む
(尤も、ROMアクセスはRAMアクセスより一般に遅いので、敢えて(A)の書き方にすることもあるがある程度リッチな環境限定

しかしROMに割り当たっているオブジェクトにconstはがしなどやられる可能性を考えると結局はコード見なきゃイカンので、
C++の穴があるconst仕様は糞

639 :デフォルトの名無しさん:2015/06/21(日) 09:55:35.20 ID:KiamKvSu
const付けると最適化されやすくなるってホントですか

640 :デフォルトの名無しさん:2015/06/21(日) 09:56:05.44 ID:/vdMr5S0
>>637
ようわからんが有り得ない話じゃないんじゃ…
argvはポインタの配列なので、同じ配列をpsが参照するのだとしたら、配列内容の書き換えはpsの挙動に影響する

641 :デフォルトの名無しさん:2015/06/21(日) 10:00:41.87 ID:/vdMr5S0
>>639
const固有の最適化が出来る、
PC相対でデータを参照できるインストラクションセットでなおかつコードをROMに置く場合、constを付けたらPC相対アクセス1命令になる
そうでなければ一般に遠くはなれたRAMまでデータを参照に行くコード
(最悪、当該変数のアドレスをROMかRAMからレジスタに読み込んで、当該レジスタを使ってリードアクセスの2命令ぐらいになる上に、
レジスタを使う以上値の退避が必要となり、pushやpopまで発生するかも試練、

642 :デフォルトの名無しさん:2015/06/21(日) 10:05:57.71 ID:XfDjA2Ye
ならconst/register/volatileは共に処理系のヒントのためのキーワードで

643 :デフォルトの名無しさん:2015/06/21(日) 10:12:42.48 ID:V01ss4k7
>>640
> ちなみにunix系でargvを書き換えるとpsの出力が変わる
argvを書き換えるという事は
argv = hoge;
に他ならないが、どのOSの、どのバージョンがそんな挙動を示すんだ?

644 :デフォルトの名無しさん:2015/06/21(日) 10:18:11.32 ID:/vdMr5S0
>>643
漏れは「配列内容の書き換え」ときちんと断ったで?

645 :デフォルトの名無しさん:2015/06/21(日) 10:29:35.52 ID:V01ss4k7
>>644
argvをどうやって書き換えると、配列内容が書き換わるのかね?
ありえない話じゃないと言っているんだから、そういうテクニックがあるんだろうな。
で、どうやって書き換えるんだ?

646 :デフォルトの名無しさん:2015/06/21(日) 10:37:28.53 ID:XFnAya/C
文盲のフリしてconst否定派のイメージダウンを図る肯定派の攻撃とみた

647 :デフォルトの名無しさん:2015/06/21(日) 10:40:11.48 ID:V01ss4k7
ついでに言っておくが、linuxや古いunixでのプロセスタイトルの変更は
argvでもargv[0]の書き換えではなく、argv[0]の指している先(内容)を書き換えている。

それをargvの書き換えだけで変更できるんだったら、スゲー大発見だよ。

648 :デフォルトの名無しさん:2015/06/21(日) 10:49:31.35 ID:YnY7GEM9
>>637>>643
constポインタの話をしてたんだからポインタが指す先を書き換える話に決まってるだろ
例えばこうやるんだよ
argv[0][0] = 'B';
argv[0][1] = 'A';
argv[0][2] = 'K';
argv[0][3] = 'A';

649 :デフォルトの名無しさん:2015/06/21(日) 10:53:49.07 ID:YnY7GEM9
>>647
文脈読めないバカ

650 :デフォルトの名無しさん:2015/06/21(日) 10:56:19.10 ID:CUX5ZuNU
>>639
実体にconstつけると即値になったりする
ポインタや参照のconstは逆に最適化を妨げたりもする
bool func(const int& a, int* b)
{
int c{a};
func(b);
return c == a;
}

651 :デフォルトの名無しさん:2015/06/21(日) 11:58:48.84 ID:/vdMr5S0
>>650
ようわからんがint c{a}って何でしたっけ…;

それはともかく、func(b)にaの実体を書き換える副作用が無い、とコンパイラが判断できる状況なら
>>650の例ではfunc()内のcもaも普通に即値に落ちるのでは…
(cが事実上const扱いで即値に落ちるのはデータフロー解析の助けを借りてそうなるで最終的にfunc()はtrueを返す関数になる

で、同じことはaにconstが付いていなくても言えるんじゃ…

652 :デフォルトの名無しさん:2015/06/21(日) 12:01:25.32 ID:/vdMr5S0
スマンaは即値に落ちないorz
しかしfunc()が定数trueを返す関数にまで最適化されることは(func(b)呼び出しの副作用の無さをコンパイラが見切れば)有り得る

653 :デフォルトの名無しさん:2015/06/21(日) 12:09:14.03 ID:V01ss4k7
>>649
文脈読めない方が悪いと責任転嫁する、三菱のSIerのようなバカ。

まだ、
> ちなみにunix系でargvを書き換えるとpsの出力が変わる
こんなアホな主張を続けるのか?

654 :デフォルトの名無しさん:2015/06/21(日) 12:22:33.00 ID:YnY7GEM9
>>653
はいはい「unix系ではargvを書き換えるとpsの出力が変わるOSがある」に訂正しますよ
でもあれは
>「付けるべき」「付けなきゃ駄目」と珍妙な主張する人たちは
>メイン関数のargvをどう思ってるわけ?
に関して言ったことで、そこは論点じゃない
揚げ足取りもいい加減にしとけよ

655 :デフォルトの名無しさん:2015/06/21(日) 12:36:06.25 ID:k0Gw61eH
いまどきunixって・・・
おっさんはしね

656 :デフォルトの名無しさん:2015/06/21(日) 12:40:57.01 ID:YnY7GEM9
文脈よめないアホがまだ揚げ足取りで粘着してるな
そんなんじゃ三菱のSIerさんにまたたしなめられちゃうぞw
そんなことよりconst付けるべきところではちゃんとconst付けろよ怠け者

657 :デフォルトの名無しさん:2015/06/21(日) 13:40:39.00 ID:ZULOTU5v
こんな記述するための、fooの宣言の仕方をおしえてください
std::vector<int> v;
foo<int,std::vector>(v);

もっというと
foo<vの要素からint,vからvector>(v);
がしたい

658 :デフォルトの名無しさん:2015/06/21(日) 13:49:29.11 ID:jWPtn3rV
>>656
付けることが正しいかのような妄想を他人に吹聴しないでください

659 :デフォルトの名無しさん:2015/06/21(日) 13:57:17.92 ID:fO5JAwrS
>>657
template<class V>void foo(const V& v);
にして
typename V::value_type
を使うべきだと思う

660 :デフォルトの名無しさん:2015/06/21(日) 14:26:09.56 ID:9rSSXz+5
>>657
関数テンプレートは部分特殊化出来ないが
型推論から部分的な型を導ける

http://ideone.com/f0ibAT

661 :デフォルトの名無しさん:2015/06/21(日) 14:34:03.13 ID:vdoq01Zs
>>633
初期化のつもりでconst_castって、未定義動作になるよ。

662 :デフォルトの名無しさん:2015/06/21(日) 14:39:16.26 ID:ZULOTU5v
>>660
ありがとうございます。
参考にさせて頂きます。

663 :デフォルトの名無しさん:2015/06/21(日) 14:39:50.18 ID:j4xtDVxh
>>661
規格のどこに書いてある?

664 :デフォルトの名無しさん:2015/06/21(日) 14:44:04.49 ID:vdoq01Zs
>>663
7.1.6 [dcl.type] p4
Except that any class member declared mutable (7.1.1) can be modified,
any attempt to modify a const object during its lifetime (3.8) results in undefined behavior.

665 :デフォルトの名無しさん:2015/06/21(日) 14:57:07.41 ID:6GC1jl0K
弱参照と強参照について、わかりやすい解説サイトなどありましたらご指導お願いします

666 :デフォルトの名無しさん:2015/06/21(日) 14:59:10.49 ID:ARzVGPaS
あるけど指導はしてやらない

667 :デフォルトの名無しさん:2015/06/21(日) 15:48:17.40 ID:CUX5ZuNU
>>657
#include <vector>

template <typename elem, template <typename...> class cont>
struct foo
{
foo(cont<elem>&) { }
};

int main()
{
std::vector<int> v;
foo<decltype(v)::value_type, std::vector> w(v);
}

668 :デフォルトの名無しさん:2015/06/21(日) 17:28:09.41 ID:V01ss4k7
>>654
> はいはい「unix系ではargvを書き換えるとpsの出力が変わるOSがある」に訂正しますよ

間違いを認められないゴミクズ。
どのOSのどのバージョンが、argvを書き換えると、psの出力が変わるんだ?

669 :デフォルトの名無しさん:2015/06/21(日) 17:34:53.30 ID:7Y2WUkP1
うむ、そんなことができるなら
argv を存在しないアドレスに割り当てれば
ps ごとアクセスバイオレーションを起こしてストップすることも
考えられるな

670 :デフォルトの名無しさん:2015/06/21(日) 17:38:27.30 ID:7Y2WUkP1
システムとしてそれが成り立つなら脆弱さからしてダメすぎる希ガス

671 :デフォルトの名無しさん:2015/06/21(日) 17:43:34.43 ID:RBHwsW1q
>>595 >>654
こんな恥ずかしいレスしちゃ奴に構ってたのか…

672 :デフォルトの名無しさん:2015/06/21(日) 17:54:58.69 ID:RBHwsW1q
>>652
即値どころかfunc(const int&,int*)の中のfunc(int*)が副作用ないなら
普通に定数返すね
この場合、func(const int&,int*)呼び出し元はfuncのコールが消える

673 :デフォルトの名無しさん:2015/06/21(日) 18:02:00.70 ID:gR9DrUit
>>670
自分のプロセス空間で自分でバグやらかして死ぬだけでなにがシステムの脆弱性だよ

674 :デフォルトの名無しさん:2015/06/21(日) 18:07:07.42 ID:RBHwsW1q
レス番間違えてたごめん、間違ってるのは>>668
argvは確か仕様上変更可能

675 :デフォルトの名無しさん:2015/06/21(日) 18:15:18.23 ID:RBHwsW1q
また間違えた
仕様上ってのはLinuxなどではなくCの仕様上の話

これは例外的に仕様でmutableなのが明確=基本のイディオムとなってる以上、
他人に見せる物には付けるべきではないね

676 :デフォルトの名無しさん:2015/06/21(日) 18:17:20.45 ID:1IBkKjPW
そうだ
void main() がありえない理屈と同じ

677 :デフォルトの名無しさん:2015/06/21(日) 21:01:37.12 ID:KN4zQeQw
void mainがあり得ない理屈は
たまたま規格がそうなってたから
とくに深い理由は無い

678 :デフォルトの名無しさん:2015/06/21(日) 21:05:58.15 ID:1kI6SICX
void main()をしょっちゅう使っています。有るでしょ?

679 :デフォルトの名無しさん:2015/06/21(日) 21:58:31.73 ID:VBNKos8R
誰も知らないようなC++の奇怪な文法を教えてください

680 :デフォルトの名無しさん:2015/06/21(日) 22:04:58.42 ID:CUX5ZuNU
奇怪語でもやっとれ

681 :デフォルトの名無しさん:2015/06/21(日) 22:17:28.30 ID:V01ss4k7
>>674-674
何言ってんだ? このバカは。

682 :デフォルトの名無しさん:2015/06/21(日) 22:36:19.79 ID:/gmt9Vmx
ちょっと勢い余りました。
なのでargvの指す先をいじることでpsの結果が変わる話を
ISO/IEC 9899:2011でargvが変更可能な話にすり替えちゃいました。てへ☆

683 :デフォルトの名無しさん:2015/06/21(日) 23:59:07.75 ID:PLHnXuw3
PS. I hate you.

684 :デフォルトの名無しさん:2015/06/22(月) 00:12:34.01 ID:e4hiyCLD
>>553
constexprとconstは全く違うわけでな

685 :デフォルトの名無しさん:2015/06/22(月) 00:20:50.26 ID:owzZAd5i
>>679
::*
->*

686 :デフォルトの名無しさん:2015/06/22(月) 00:22:36.97 ID:DsLO/OM8
トライグラフとか使えば奇怪なソースコードができる!書ける!
(いやC++では無くなったんだっけ?

687 :デフォルトの名無しさん:2015/06/22(月) 00:43:38.87 ID:rhvfLAPY
何かもの凄いカオスな感じだなー

688 :デフォルトの名無しさん:2015/06/22(月) 02:59:43.06 ID:yyiP4D81
NGが捗るな

689 :デフォルトの名無しさん:2015/06/22(月) 03:57:47.08 ID:HGgblcg2
>>682
>なのでargvの指す先をいじることでpsの結果が変わる話を
>ISO/IEC 9899:2011でargvが変更可能な話にすり替えちゃいました。てへ☆
別に論点ずれてないよ
元の話でも事実だから

690 :デフォルトの名無しさん:2015/06/22(月) 04:26:44.17 ID:HGgblcg2
>>677
調べたが全然たまたまじゃないね
ANSI-Cから、mainの返り値はプログラムの終了値として使われるので、int
ちなみにconst無しargvのmainの例の下に、argvが変更可能と明記

C++の話題なのでこれ以上は控えるが、ここまで書いてあるのに否定する方がおかしいだろ

691 :デフォルトの名無しさん:2015/06/22(月) 05:16:38.92 ID:VgWiq03z
std::iterator_traitsのようなtraitsは
usingをつかってtypenameを書かないで良いように
する方向に向かっているんですか?

692 :デフォルトの名無しさん:2015/06/22(月) 08:32:36.63 ID:y4ye4wgw
struct CCC
{void ccc(){}};

auto mf = std::mem_fn(&CCC::ccc);

このautoを使わない場合
mfはどのような宣言になりますか?

693 :デフォルトの名無しさん:2015/06/22(月) 08:55:08.05 ID:XqKQre6K
>>692
std::function<void (CCC&)> mf = std::mem_fn(&CCC::ccc);

694 :デフォルトの名無しさん:2015/06/22(月) 09:15:30.20 ID:y4ye4wgw
>>693
ありがとうございます

695 :デフォルトの名無しさん:2015/06/22(月) 09:20:33.75 ID:MaxvP/1L
>>689
まだ、ごまかそうとしてるのか? ゴミクズ。
お前がほざいてたのは「argvの指す先をいじる」ではなくargvをいじる事だ。

> はいはい「unix系ではargvを書き換えるとpsの出力が変わるOSがある」に訂正しますよ
どのOSのどのバージョンだよ。

argvの指す先の指す先を書き換えるとpsの出力が変わるOSは良くあるが。

696 :デフォルトの名無しさん:2015/06/22(月) 09:41:10.37 ID:b3s7gwa+
>>692
嘘つきに騙されるな
std::mem_fun_t<void, CCC>

ちなみにstd::mem_funは次の規格改訂で削除される予定

697 :デフォルトの名無しさん:2015/06/22(月) 10:04:50.18 ID:xy197upQ
>>696
はぁ?

698 :デフォルトの名無しさん:2015/06/22(月) 10:36:36.21 ID:LtTdRlZ1
プログラミングをかじってる人はケンカっ早い人が多いんですか?

割とマジでこの質問をぶつけたくなる流れだな

699 :デフォルトの名無しさん:2015/06/22(月) 10:39:16.97 ID:QXqLXD7b
プログラムは宗教だからな

700 :デフォルトの名無しさん:2015/06/22(月) 17:42:42.61 ID:HGgblcg2
>>695
はいはい無知乙
知らなかったなら素直にそう言えばいいだけなのに

701 :デフォルトの名無しさん:2015/06/22(月) 17:48:29.23 ID:HGgblcg2
形勢が悪いからって頑張って重箱の隅つついてごまかして…
詭弁のガイドラインの典型をやってる人って、
それで何が得られると思ってるんだろう

702 :デフォルトの名無しさん:2015/06/22(月) 19:55:05.81 ID:josAaD1D
でもネット以外で面と向かった相手を攻撃することは殆ど無いという

703 :デフォルトの名無しさん:2015/06/22(月) 20:37:50.10 ID:YfvhQkht
>>702
平和な人だね
面と向かって喧々囂々やり合えないことこそ半端ないストレスなんだが
もっとも、どんなに白熱してても論客としての一定の礼儀はあってのことだ
潔くない保身だの幼児チックな感情論はもってのほかで

704 :デフォルトの名無しさん:2015/06/22(月) 20:48:34.90 ID:MaxvP/1L
>>700-701
ウソを突き通して守る安っぽいプライド。
頭の悪い奴の典型だな。

705 :デフォルトの名無しさん:2015/06/22(月) 20:56:07.78 ID:ILh0wq8G
c++は間違った方向に進んでいるように思うのは俺だけか?

706 :デフォルトの名無しさん:2015/06/22(月) 21:00:10.30 ID:z5fTT0EF
○○なのは俺だけか!?
っていう人久しぶりに見た

707 :デフォルトの名無しさん:2015/06/22(月) 21:06:28.63 ID:Rf9RS/lq
マチガッテル系ってあったな

708 :デフォルトの名無しさん:2015/06/22(月) 21:17:12.65 ID:HGgblcg2
>>704
元のレスの人は言葉足らずで誤解があっただけで嘘ではないよ
主題を無視して欺瞞的な態度を貫いてるのは君だよ
いい加減自覚しようね

709 :デフォルトの名無しさん:2015/06/22(月) 21:34:30.21 ID:9wnjfpMf
>>705
どういう方面で?
enum class とか範囲 for とかは俺としてはようやくだけど、よくぞ入れてくれましたって感じなんだけど

710 :デフォルトの名無しさん:2015/06/22(月) 22:08:06.32 ID:+y1xR2Mb
>>709
横レスすまそ
糞すぎ=例外関係、typename/templateの前置、const&と&&に分身しちまったテンポラリ

711 :デフォルトの名無しさん:2015/06/22(月) 22:19:32.57 ID:iW451COy
意味不明

712 :デフォルトの名無しさん:2015/06/22(月) 22:43:13.67 ID:6dp2DntE
const &&も忘れないでください。
テンポラリを束縛するんだから
const &よりconst &&の方が適切。

713 :デフォルトの名無しさん:2015/06/22(月) 22:48:35.56 ID:HGgblcg2
>>710 >>712
参照はC++03視点だと汚く見えるかも知れないけど、
実際はmove実装時のconst外しが消え、
rvalue(T&&)一本にして、constも本来の意味に綺麗にしている

std::forwardとかのがいかにも妥協的で汚い

714 :デフォルトの名無しさん:2015/06/22(月) 23:00:40.73 ID:9wnjfpMf
>>710
全然具体的じゃないんだが...
まあ、記法が気持ち悪いと言うのには同意するけど、それは今に始まったことじゃないし

715 :デフォルトの名無しさん:2015/06/22(月) 23:02:22.60 ID:DsLO/OM8
エンジニアなんだから
C++も直せるでしょ?

716 :デフォルトの名無しさん:2015/06/22(月) 23:47:12.28 ID:tlZZb8mq
具体的に書いたら無知を晒すだけだからな。

717 :デフォルトの名無しさん:2015/06/23(火) 08:21:07.65 ID:Ng+F0VU1
template argument deductionがT&&に限って参照に推論されるのがイヤです

718 :デフォルトの名無しさん:2015/06/23(火) 08:52:42.83 ID:I0ATeeuQ
> 元のレスの人は言葉足らずで誤解があっただけで嘘ではないよ
間違いを訂正できないバカは議論する資格がない。

> 主題を無視して欺瞞的な態度を貫いてるのは君だよ
主題以前の問題だが、
>>608
> 「メイン関数のargvをどう思ってるわけ? 」w
と言っておきながら、
mainのargv(の参照先)は書き換える事でpsの出力変える。
=> だからmainのargvにconstないのはおk
と意味不明のタワゴトほざいてるバカだ。
それを元レス正しいとかいってる、お前もバカ。

719 :デフォルトの名無しさん:2015/06/23(火) 08:57:25.00 ID:N7JGN5SL
お前は裁判で本当はやったのにやってないと言えば
無罪になるのに、やったと言えるのか?

720 :デフォルトの名無しさん:2015/06/23(火) 09:10:55.81 ID:kcQ8bjDG
やってないと言えば無罪になるとか少なくとも日本ではありえんな。
日本の刑事裁判の99.9%が有罪になるなんて有名な話だろ

721 :デフォルトの名無しさん:2015/06/23(火) 09:28:34.22 ID:N7JGN5SL
0.01パーセントが無罪になったことがあり得ているのに
あり得ないと矛盾したことを言う馬鹿

722 :デフォルトの名無しさん:2015/06/23(火) 10:03:44.14 ID:M//w1eH8
>>721
「やっていない」と主張するだけでは無罪に
ならないのは、事実でしょう。
無罪になるには、他の客観的な証拠があったから
で、否認しつづけても有罪にされた例は、冤罪事件
を見ればあきらかでしょう。
たとえば、「八海事件」「徳島ラジオ商殺し事件」

723 :デフォルトの名無しさん:2015/06/23(火) 10:18:55.03 ID:KLn5qgUW
シカトしてたけどあまりにしつこいんで。。。

>>718
意味不明なタワゴトほざいてるのはお前だよバカ
ID出てるんだからイチャモンつける前に文脈を確認しろ
「メイン関数のargvをどう思ってるわけ? 」ってアホ発言は俺が言ったんじゃないんだよバカ
「argv書き換え」っていうのがargvが指してる先を書き換えるという
意味だっていうのも同じIDで補足している

724 :デフォルトの名無しさん:2015/06/23(火) 10:24:08.59 ID:N7JGN5SL
やった証拠が無ければ無罪だろ
やってないことの証拠とか悪魔の証明だから
どれだけ馬鹿なの

725 :デフォルトの名無しさん:2015/06/23(火) 10:37:39.91 ID:bPOLRPzG
痴漢冤罪なんかやった証拠がないのに女が「やった!」と言う一言だけで有罪確定だぞ
刑事裁判甘く見過ぎだな

726 :デフォルトの名無しさん:2015/06/23(火) 10:41:55.94 ID:kcQ8bjDG
>>724
無罪と無実は違うんだよ
お前が何を主張したいのか知らんけど起訴されたらやっていないという証拠を求められるのが今の日本の司法。
つーかいい加減すれ違いだから自分でググれ、それか「それでも僕はやってない」って映画でもレンタルして見ろ

727 :デフォルトの名無しさん:2015/06/23(火) 10:50:15.54 ID:rWZbMeiE
朝からアスペvsアスペかよw

728 :デフォルトの名無しさん:2015/06/23(火) 11:00:17.64 ID:N7JGN5SL
前提条件として「裁判で本当はやったのにやってないと言えば
無罪になる」という状態が起こることを仮定しているわけだから
これが現実にあり得るかあり得ないかはどうでもいい話だろ

729 :デフォルトの名無しさん:2015/06/23(火) 11:01:19.79 ID:9r3RXp4j
スレ違いどころか板違いの話題を延々と続けるな、迷惑だ

730 :デフォルトの名無しさん:2015/06/23(火) 12:16:44.03 ID:VUNYVcVn
>>718
メインについてどうだと言ったのは俺だが
argvの書き換えとargvの指す先の書き換えについて
大変こだわってる>>723は別人だ

731 :デフォルトの名無しさん:2015/06/23(火) 14:31:04.11 ID:EDJkGmJ5
メモリの消費についてなんですが
例えば、
1.グローバルで、配列を宣言
2.関数の中で配列を宣言
3.クラスの中で配列を宣言
この三つでメモリの消費はどう違うのでしようか?
また、タブーな使い方とかありますか?
(メモリをどんどん使用するとか)

732 :デフォルトの名無しさん:2015/06/23(火) 14:36:35.36 ID:Seol6lnP
スタックとヒープでggrks

733 :デフォルトの名無しさん:2015/06/23(火) 15:13:46.37 ID:RNrYnhXO
std::free(new int);

734 :デフォルトの名無しさん:2015/06/23(火) 15:43:25.10 ID:Tkj4kQAi
まだconstごときでモメてんのかよw

735 :デフォルトの名無しさん:2015/06/23(火) 16:46:06.41 ID:I0ATeeuQ
>>723
「メイン関数のargvをどう思ってるわけ? 」を否定しただろ。死ねよ。バカ。

>>608 :デフォルトの名無しさん:2015/06/21(日) 02:47:44.87 ID:YnY7GEM9
> 「メイン関数のargvをどう思ってるわけ? 」w

736 :デフォルトの名無しさん:2015/06/23(火) 18:33:55.12 ID:kS9yst7s
>>731
クラスの中で配列がstaticの場合はグローバルと同じですが
staticでない場合はそれだけではメモリ確保されません。
その配列を持つクラスの変数をグローバルに書いたときはグローバルに、
関数ローカル書いたときは関数ローカルに確保されます。
struct A {char a[100];};
A a;//グローバルに
int main() {A a;} //関数ローカルに

737 :デフォルトの名無しさん:2015/06/23(火) 19:25:35.40 ID:J6BxFv/5
>>731
1.グローバルで、配列を宣言 -- 静的記憶
2.関数の中で配列を宣言 -- スタック
3.クラスの中で配列を宣言 × === 他の3つのどれかに振り分けられる
4.配列を動的確保(malloc/free あるいは new/delete) -- ヒープ

この中でヒープは罠が多くやや難しいがプログラマなら必ず理解・習得すべし
スタックは一番使いやすいけど、関数をぬけた後持ち出せないとか、セキュリティホールにつながるとか罠があるけど、やっぱりいちばん使いやすい
グローバル・静的記憶は楽ちんだが子どもに刃物を持たせるようなものなのでなるべく避ける
後はそれぞれの用語でググってくれ

738 :デフォルトの名無しさん:2015/06/23(火) 21:03:11.65 ID:HRCTZ2uq
auto f() {
 static int 関数の中で配列を宣言[1];//スタックじゃない
 thread_local int 関数の中で配列を宣言[1];//スタックじゃない
 new(&関数の中で配列を宣言[0]) int[1];//ヒープじゃない
}

だいいちヒープって何だよ
フリーストアと何か違うの

739 :デフォルトの名無しさん:2015/06/23(火) 21:22:46.71 ID:KBBYxELv
malloc/free=ヒーパローケーター
new/delete=フリーストアローケーター
new/deleteは重いので多用する場合は
カスタマローケーター以外では使うべきではありません
スタックが高速なので特に理由のない限りスタックをつかってください

740 :デフォルトの名無しさん:2015/06/23(火) 21:31:34.85 ID:qkxeTacg
c++は記法が汚いよなあ。ラムダ式とかテンプレートとかが多用されているコードを見ると気持ち悪いと思うのは俺だけか?

741 :デフォルトの名無しさん:2015/06/23(火) 21:35:17.11 ID:DnHgPUjX
○○って俺だけ~?○○って俺だけ~?

742 :デフォルトの名無しさん:2015/06/23(火) 21:35:37.96 ID:lAuYvcP9
ファンクタとかマクロが多用されてる汚いコードを何とかしようとした結果だろ

743 :デフォルトの名無しさん:2015/06/23(火) 21:39:26.59 ID:xmziolSE
<::><%%>();

744 :デフォルトの名無しさん:2015/06/23(火) 21:50:54.09 ID:pXD9WDis
>>709
言語構文の拡張ではなくライブラリで言語拡張もどきやってるのがなぁ。
for_eachとかにラムダ関数食わせてると、
なんでこんなところにreturnあるねん?
とか寝惚けてデバッグしてると混乱する。

745 :デフォルトの名無しさん:2015/06/23(火) 22:27:32.43 ID:fA8g5cCu
CもC++もファンクター多用しまくりな言語です
何を言ってるんですか

746 :デフォルトの名無しさん:2015/06/23(火) 22:30:30.81 ID:Yra6/pdr
>>744
> 言語構文の拡張ではなくライブラリで言語拡張もどきやってるのがなぁ。

意味わからん...
俺にアンカーしてるんだから、enum class とか範囲 for の話だよね?

747 :デフォルトの名無しさん:2015/06/23(火) 22:31:15.16 ID:ZYzQRQQT
typeid
キーワード使うのに#include必要とか気は確かかと

748 :デフォルトの名無しさん:2015/06/23(火) 22:42:53.22 ID:qkxeTacg
範囲for使っている時に限ってindexが必要になり、int i=0;とi++;を挿入する事になるよな。なのでforは最初から普通にfor(int i=0;って書くのは俺だけか?

749 :デフォルトの名無しさん:2015/06/23(火) 22:59:36.96 ID:ZYzQRQQT
うん、範囲forとは何たるやを強引に無視するとそうなるな

750 :デフォルトの名無しさん:2015/06/23(火) 23:04:49.44 ID:VlLWw7EO
range-based forのindex付属版はたま~に欲しくなるな
rubyのeach_with_indexみたいなの

751 :デフォルトの名無しさん:2015/06/23(火) 23:41:16.93 ID:Yra6/pdr
>>747
sizeof は演算子なのに結果の型 size_t 使うには include 必要なんだから、何を今さらって感じなんだが

752 :デフォルトの名無しさん:2015/06/23(火) 23:54:18.75 ID:ZYzQRQQT
>>751
char func() { return sizeof(long long); }
これのどこにincludeが必要なのか教えてくれ

753 :デフォルトの名無しさん:2015/06/24(水) 06:30:37.03 ID:JTCZnA99
>>752
> 結果の型 size_t 使うには

って書いてあるんだが...

754 :デフォルトの名無しさん:2015/06/24(水) 07:13:56.18 ID:TuXeNp5y
>>751
もともと問題として挙げられたのは
typeidがコード上に出現するだけでもインクルードが必要なことなので
size_tとは話が違う。

755 :デフォルトの名無しさん:2015/06/24(水) 09:42:15.65 ID:iKfJXuFB
>>753
sizeof()の結果の型ってそもそもsize_tって決まってたっけ?
なんにしろ#include要るかいらないかって話なのに
size_t使う場合なんて条件限定して反論する意味ないよね

756 :デフォルトの名無しさん:2015/06/24(水) 11:11:40.49 ID:mSDBMbUW
何でバカってこんな下らんことに必死になるんだろう...

757 :デフォルトの名無しさん:2015/06/24(水) 11:18:16.20 ID:2tIhDsiK
そんなことよりchar8_tビルドインタイプが無いほうがヤバいだろ
8ビットキャラクター以外のマスィーンで
UTF8キャラクターを使う場合どうしたらよいのかのう

758 :デフォルトの名無しさん:2015/06/24(水) 11:32:42.92 ID:Y94ZhR9j
charでいいじゃん

759 :デフォルトの名無しさん:2015/06/24(水) 13:25:30.70 ID:q/iymKMR
範囲forってひとつのコンテナしか扱えないから使いづらい。
ごく単純なzipWith的なこともできないじゃん。

760 :デフォルトの名無しさん:2015/06/24(水) 13:56:02.64 ID:DVsceA8G
そういうときはtransformでいいんじゃないの

761 :デフォルトの名無しさん:2015/06/24(水) 14:29:35.49 ID:hCh+/iKv
c++にjavascriptみたいなデータや関数の柔軟性が有れば言う事ないんだがなあ。

762 :デフォルトの名無しさん:2015/06/24(水) 14:31:28.97 ID:ApCDts4W
インタプリタと比べるのはちょっと…

763 :デフォルトの名無しさん:2015/06/24(水) 14:59:51.82 ID:2tIhDsiK
tupleにstd::beginとstd::endを定義すればできる

764 :デフォルトの名無しさん:2015/06/24(水) 15:11:55.77 ID:ZTbRYN2O
javaとかいうクソ言語信仰している奴ってなんなの?

765 :デフォルトの名無しさん:2015/06/24(水) 15:14:35.47 ID:2tIhDsiK
tupleよりtupleを継承したクラスを使ったほうが一つsdt::beginに固定じゃなくなるからいい

766 :デフォルトの名無しさん:2015/06/24(水) 15:20:45.95 ID:hCh+/iKv
>>764
javaの話なんて誰もしとらんだろ。
お前が阿呆、そして童貞。

767 :デフォルトの名無しさん:2015/06/24(水) 16:04:48.83 ID:ZTbRYN2O
図星つかれて発狂かよw
メンタルよえぇw

768 :デフォルトの名無しさん:2015/06/24(水) 16:36:39.97 ID:hCh+/iKv
767は童貞で確定。

769 :デフォルトの名無しさん:2015/06/24(水) 16:36:51.41 ID:q/iymKMR
それ実際やるかつったらやらないわけで、それを称して不便と呼ぶのだと思う。

770 :デフォルトの名無しさん:2015/06/24(水) 16:45:56.11 ID:UxxhGQg+
そもそもzipWithって何?

771 :デフォルトの名無しさん:2015/06/24(水) 16:49:54.82 ID:DVsceA8G
ggrks

772 :デフォルトの名無しさん:2015/06/24(水) 16:50:02.26 ID:ZTbRYN2O
javaのように高級言語のクソ仕様にすればできないこともない
だが、その仕様改訂したとしてお前ら4流マどもにはその改悪の行方がどれほどの悪影響を与えるか理解できんだろうな

773 :デフォルトの名無しさん:2015/06/24(水) 16:54:01.44 ID:UxxhGQg+
ぐぐったら二つのコンテナを同時になんかするやつだった
いまいち有用な場面が思い浮かばなかった

774 :デフォルトの名無しさん:2015/06/24(水) 19:28:05.07 ID:tF/MfqgU
C++の創造主ってBjarne Stroustrupらしいけど、結局彼は具体的にはなにをつくったの?
MSやGNUがコンパイラ作ってるんでしょ

775 :デフォルトの名無しさん:2015/06/24(水) 19:35:55.69 ID:1wf20En+
言語の仕様

776 :デフォルトの名無しさん:2015/06/24(水) 19:52:14.93 ID:5lQ1lw+W
Cfront

777 :デフォルトの名無しさん:2015/06/24(水) 20:58:30.65 ID:ayX+k7op
>>757
C++11はcharがutf-8が入るサイズと規定されとるでよ

778 :デフォルトの名無しさん:2015/06/24(水) 21:14:08.06 ID:awOBQFTx
forでtupple回せるじゃん
zipWithとforに何の関係があるんだろ…

779 :デフォルトの名無しさん:2015/06/24(水) 21:36:55.35 ID:NRCLHLbF
>>753
おい751
752のリターン式が返却値の型に、
どのように変換されるのか言ってみな

780 :デフォルトの名無しさん:2015/06/24(水) 21:55:50.66 ID:5/GXLIV8
おい、779
「リターン式」←ここ笑うところか?

781 :デフォルトの名無しさん:2015/06/24(水) 21:57:01.52 ID:33RnX7v/
5.3.3p6
『The result of sizeof and sizeof... is a constant of type std::size_t』

782 :デフォルトの名無しさん:2015/06/24(水) 21:58:52.68 ID:33RnX7v/
間違えて送信した。
>>755向けのレス。

>>751
size_tを使うのにcstddefのインクルードは要らないはず

783 :デフォルトの名無しさん:2015/06/24(水) 22:00:09.78 ID:mSDBMbUW
>>779
>>756
しかも的はずれだし

784 :デフォルトの名無しさん:2015/06/24(水) 22:30:45.79 ID:NRCLHLbF
>>780
うん、バカ笑いするところだよ

785 :デフォルトの名無しさん:2015/06/24(水) 23:15:09.57 ID:3dw221TT
リターン式ごときで笑ってたらSTLとかヘッダーファイルとかインスタンスなんか目も当てられない

786 :デフォルトの名無しさん:2015/06/24(水) 23:45:45.92 ID:q/iymKMR
複数のコンテナからtupleにするのに必要になるものって?

787 :デフォルトの名無しさん:2015/06/24(水) 23:47:39.75 ID:x/BKJXwU
>>785
ヘッダーファイルって、なんて言うのが正しいの?

788 :デフォルトの名無しさん:2015/06/25(木) 00:41:04.13 ID:8PqzseGz
コミュ障ばっかだなここ

789 :デフォルトの名無しさん:2015/06/25(木) 00:52:42.12 ID:t/w7u9he
殊更当たり前のことをレスしないでいただけますか?

790 :デフォルトの名無しさん:2015/06/25(木) 05:19:34.80 ID:UTudwcBW
おたがいの疑問に対しておたがいにまともに返す気がないから、
ドッジボールどころかもはや撃ちあいだな 殺意に満ちあふれている

791 :デフォルトの名無しさん:2015/06/25(木) 05:51:41.31 ID:QrIpaMYv
お互いってどれとどれが対応してんのかすらわからんぞこれ

792 :デフォルトの名無しさん:2015/06/25(木) 08:00:50.08 ID:nSqMrdVl
範囲じゃないforだったら複数のコンテナーを扱えるのだろうか

793 :デフォルトの名無しさん:2015/06/25(木) 08:03:29.76 ID:NYl9rCV7
同じコンテナならいけるんじゃね

794 :デフォルトの名無しさん:2015/06/25(木) 21:27:15.66 ID:b0ArPb9h
>>781
sizeofの返値の型はsize_t
だが、なにもインクルードせずにsizeofを使ったところで問題ない。
なぜならsize_tは基本型のtypedefにすぎないから、
現実はその処理系でsize_tとなる整数型を返しているにすぎない。

typeidは演算子であるにもかかわらず、基本型でないものを返すというのが根本的な違い

795 :デフォルトの名無しさん:2015/06/25(木) 22:21:42.76 ID:OEV+WERq
>size_tは基本型のtypedefにすぎない

んなこたーない
ISO/IEC 14882:2014 18.2p6

796 :デフォルトの名無しさん:2015/06/25(木) 22:31:02.71 ID:r4iSpWQ0
>>795
mpz_classかも知れないってことか?

797 :デフォルトの名無しさん:2015/06/25(木) 22:32:56.80 ID:R1q5YO+m
>>795
> The type size_t is an implementation-defined unsigned integer type
> that is large enough to contain the size in bytes of any object.

unsigned integer type は基本型 (fundamental type, 3.9.1) なわけで、
「size_tは基本型のtypedef」で合ってると思うんだけど、どういうこと?

798 :デフォルトの名無しさん:2015/06/25(木) 23:05:28.54 ID:eQSMT7Q1
template<typename T>
void test(T a)
{
  wchar_t* aa = a;    //Tがwchar_t* の場合(A)
  wchar_t* aa = a.c_str();//Tがwstring  の場合(B)
  //↓うだうだと長い
}
(A)と(B)をコンパイル時に決定したいのですが、可能でしょうか?

799 :デフォルトの名無しさん:2015/06/25(木) 23:17:03.84 ID:0CRANchn
>>798
void test(wstring a);
void test(wchar_t * a);

800 :デフォルトの名無しさん:2015/06/25(木) 23:28:08.80 ID:0CRANchn
間違えた
http://ideone.com/DQRngy

801 :デフォルトの名無しさん:2015/06/25(木) 23:31:18.66 ID:R1q5YO+m
>>800
> inline wchar_t const *aaa(std::wstring s)
> {
> return s.c_str();
> }
これ、ダングリングポインタになるよ。

>798 の解決方法としては >799 で合ってると思うんで、何を間違えたと言ってるのかわからない。

802 :デフォルトの名無しさん:2015/06/25(木) 23:33:05.46 ID:CZ++MN8y
void udauda(const wchar_t* a) { }
template<typename T> void test(T a) { udauda(a); }
template<> void test(wstring a) { udauda(a.c_str()); }

803 :デフォルトの名無しさん:2015/06/25(木) 23:52:57.85 ID:E9C2fDqc
inline wchar_t const * aaa(wchar_t const *)
inline wchar_t const * aaa(std::wstring & )

804 :デフォルトの名無しさん:2015/06/25(木) 23:57:55.69 ID:HjStf6rX
const いらないおばさんが帰ってくるから危険

805 :デフォルトの名無しさん:2015/06/26(金) 00:42:06.45 ID:JggZpWgl
staticいらない幼女

806 :デフォルトの名無しさん:2015/06/26(金) 01:47:42.06 ID:IOTh97/P
>>805
無名名前空間を使えば本当に要らないのでは…
いや個人的にはやらんけど

807 :デフォルトの名無しさん:2015/06/26(金) 03:25:07.87 ID:wqX3fguj
クラス変数系の意図は代替できないから抜けないはず

808 :デフォルトの名無しさん:2015/06/26(金) 21:48:04.57 ID:1Dyee7pB
staticないとシングルトンめんどくさすぎ
と言ってみる。

staticいらないならnewもいらないよな。
あんま使わんし。

809 :デフォルトの名無しさん:2015/06/26(金) 22:02:09.40 ID:bI5K71Dy
モノステートでいいじゃん

810 :デフォルトの名無しさん:2015/06/27(土) 08:48:25.08 ID:rTvPy598
だよな
newいらねー
mallocとplacementでいい

811 :デフォルトの名無しさん:2015/06/27(土) 09:11:43.36 ID:KUf9kyhl
calloc「…」
realloc「…」



free「…」

812 :デフォルトの名無しさん:2015/06/27(土) 12:15:24.80 ID:Uau5C/Wv
C++って良く見たら後置インクリメントなんだけど
これって何か問題にならないの?

813 :デフォルトの名無しさん:2015/06/27(土) 12:19:42.75 ID:VhkuZCtv
同じ式内でもう一度Cが出てこない限り大丈夫

814 :デフォルトの名無しさん:2015/06/27(土) 12:19:46.48 ID:34ShL78H
イテレータのi++と++iって最適化されて同じにならないの?

815 :デフォルトの名無しさん:2015/06/27(土) 12:32:23.57 ID:SX1nKwfp
内部で何やってるか分からないのにどうやって最適化するのよ

816 :デフォルトの名無しさん:2015/06/27(土) 12:41:16.82 ID:VhkuZCtv
テンプレートなんだから分かるでしょ

817 :デフォルトの名無しさん:2015/06/27(土) 13:05:27.01 ID:uSdVLyN2
C++でnew使わないならCで十分だな

818 :デフォルトの名無しさん:2015/06/27(土) 13:33:48.30 ID:HRd5Hrhz
C++不要論たまに話題なるな

819 :デフォルトの名無しさん:2015/06/27(土) 14:29:09.07 ID:rTvPy598
>>817
newが使いたいってだけで、わざわざC++なんか使う変態か?

820 :デフォルトの名無しさん:2015/06/27(土) 14:35:44.09 ID:H2Sf9zMB
なぜnewが必要でmalloc()じゃ駄目なのか分かってないんじゃね?

821 :デフォルトの名無しさん:2015/06/27(土) 14:42:41.61 ID:m86EUix7
newにできて、mallocにできないことって、何?

822 :デフォルトの名無しさん:2015/06/27(土) 14:43:44.44 ID:Me0rIRNZ
えっ

823 :デフォルトの名無しさん:2015/06/27(土) 14:51:56.28 ID:+YDV+Gxn
初心者歓迎の方の>>270あたり見てみればいいよ。

824 :デフォルトの名無しさん:2015/06/27(土) 14:55:07.96 ID:VhkuZCtv
new使わないといちいちキャストする必要あって面倒だろ
コンストラクタ呼ばないといけないし

825 :デフォルトの名無しさん:2015/06/27(土) 15:04:57.43 ID:f57Tnoer
new[]なんてデフォルトコンストラクタしか呼べないし最悪。
malloc+placement newでどんな型にも対応できて最強。

826 :デフォルトの名無しさん:2015/06/27(土) 15:09:06.62 ID:wVo6Igii
>>825
std::vector使え


>>824
new使わないとは言ったがmake_unique make_sharedを使わないとは言ってない とか?

827 :デフォルトの名無しさん:2015/06/27(土) 15:33:33.58 ID:f57Tnoer
>>826
定数メンバ変数を持つクラスをvectorで使うと
コンパイルエラーを引き起こす糞な処理系がまだ現役で使われてるので論外。

828 :デフォルトの名無しさん:2015/06/27(土) 15:51:23.71 ID:5By7g+rr
デフォルトのnewを使うなということでしょ
newであらかじめフリーストアを割り当てておいて
newでそこのどこかにオブジェクトを作る役割だけをさせろと言うことだろう

829 :デフォルトの名無しさん:2015/06/27(土) 15:53:02.39 ID:wVo6Igii
>>827
定数メンバー変数なんてめったに使わないだろ。それだけのためにmallocとか他人の目に入らない所であればどうぞご自由にご苦労様です。

830 :デフォルトの名無しさん:2015/06/27(土) 16:22:33.04 ID:YU4kaX8K
>>827
その糞コンパイラ何よ?
そんなしょうもないコンパイラ使ってる限りくだらない迂回コード書きまくらなきゃなるだろうねそりゃ

831 :デフォルトの名無しさん:2015/06/27(土) 16:34:47.20 ID:wVo6Igii
メンバー変数にconst付けたらコピー(moveも)出来なくなるからvectorに直接突っ込めなくなるのは普通だよ
正常なコピー(move)演算子も書けないだろうしね

832 :デフォルトの名無しさん:2015/06/27(土) 16:59:03.41 ID:e2zMBxYg
http://ideone.com/KTSP2Z
そんなわけないだろ

833 :デフォルトの名無しさん:2015/06/27(土) 17:16:03.83 ID:wVo6Igii
入れるだけならcopy or moveがあれば11から出来たんだったな。
でもerase使えないしsortとか各種algorithmも使えなくなるから普通はしないと思う

834 :デフォルトの名無しさん:2015/06/27(土) 17:38:41.65 ID:uSdVLyN2
このスレにはデフォルトのなんたらかんたらが嫌いな人が少なからずおる
そういう人なら他の何を犠牲にしてでも使わないくらい平気でするだろう

835 :デフォルトの名無しさん:2015/06/27(土) 18:06:21.84 ID:wVo6Igii
>>833
copy or move”コンストラクタ”が抜けてた一番大事な所

836 :デフォルトの名無しさん:2015/06/27(土) 19:16:39.28 ID:tGfycaEq
virtualも要らないな

837 :デフォルトの名無しさん:2015/06/27(土) 19:33:08.02 ID:RP+B0MK9
C width Classesにvirtualを入れることに禿も懐疑的だったらしいね

838 :デフォルトの名無しさん:2015/06/27(土) 19:38:41.04 ID:tGfycaEq
width はもっと要らない子

839 :デフォルトの名無しさん:2015/06/27(土) 19:40:50.12 ID:RP+B0MK9
すまん、脳も誤変換するんだ

840 :デフォルトの名無しさん:2015/06/27(土) 21:07:40.13 ID:K06hVkJE
最近javascriptやっているんで、
もうc++には戻りたくないわ。
javascriptは何でもかんでも代入できるし、nullやundefinedな変数があっても
気にせず実行出来るし楽チンでいいわ。
c++もそう成れば良いのになあ。

841 :デフォルトの名無しさん:2015/06/27(土) 21:21:22.45 ID:e2zMBxYg
インタプリタと比べられてもなぁ

842 :デフォルトの名無しさん:2015/06/27(土) 21:47:02.42 ID:RP+B0MK9
マシン寄りの面倒くさいところを任せておけず、
気にするとき使うのがC/C++

ハングリー精神を知らずに育ちぶっ壊れた金銭感覚してるボンボンが
ときどき闖入してひとしきり暴れて去って行く職人の工房に喩えやすい
そのとき狙われやすいのがnew

843 :デフォルトの名無しさん:2015/06/27(土) 22:58:06.17 ID:CJnS6alp
javascript特有のコールバックお化けはなるべく遠慮したいけどな
何が嫌ってあのスタイル他の言語にほとんど応用効かん
Nodeのソースコードなんて吐き気する

844 :デフォルトの名無しさん:2015/06/27(土) 23:16:57.69 ID:tGfycaEq
MFCのCString::Format位速い,
std::stringをformatできるライブラリありませんか?

boostは遅くて使い物になりません。
多分コピーするからだとおもいます
std::string s = boost::format(
        ~~

845 :デフォルトの名無しさん:2015/06/27(土) 23:18:03.65 ID:e2zMBxYg
C++11ならコピーしません

846 :デフォルトの名無しさん:2015/06/27(土) 23:22:57.63 ID:RP+B0MK9
>>844
つstd::stringstream

845も言っているようにC++11以後はムーブセマンティクスがあるので
テンポラリからのコピーはしなくなった

そこがネックと思っているおまえの頭が使い物になっているかチェックしろ

847 :デフォルトの名無しさん:2015/06/27(土) 23:35:10.71 ID:tGfycaEq
>>845
コピーしているかどうかなんか問題ではありません
遅いことが問題であって、速いライブラリありませんか?という質問です
みなまで言わせないでください。

よく「一から十まで教えないとできないの?」とか言われるでしょ

848 :デフォルトの名無しさん:2015/06/27(土) 23:38:37.66 ID:nyq9mOqM
キチガイだった

849 :デフォルトの名無しさん:2015/06/27(土) 23:47:31.42 ID:eNvk9NzQ
言っておくけど>>847はいつもの基地害コテハン
Qの炎上学習法だぞ

850 :デフォルトの名無しさん:2015/06/27(土) 23:49:38.29 ID:tGfycaEq
本買ってね

851 :デフォルトの名無しさん:2015/06/27(土) 23:49:42.05 ID:RP+B0MK9
>>847
> たぶんコピーするからだとおもいます

こう言ったのはおまえだぞ
マイナス十をほざいたのはおまえだぞ

死ねとはっきり言われないとできないのか?

852 :デフォルトの名無しさん:2015/06/28(日) 00:05:13.89 ID:z/1IIDkq
cppformatってやつのステマでしょ知ってる知ってる

853 :デフォルトの名無しさん:2015/06/28(日) 02:01:03.78 ID:G1fmyMIp
http://ideone.com/hvPva4

854 :デフォルトの名無しさん:2015/06/28(日) 02:09:25.84 ID:h2M+2bNV
ヌル文字のバッファが足りないな

855 :デフォルトの名無しさん:2015/06/28(日) 02:36:16.89 ID:j0ev9jQe
std::string s = boost::format()
がC++11からコピーしなくなったって?
猫に小判、無知にC++11コンパイラ

856 :デフォルトの名無しさん:2015/06/28(日) 03:05:38.03 ID:z/1IIDkq
ぱっと見boost::format()でstringが帰ってきてそれをmoveするように見えるけど違うの?

857 :デフォルトの名無しさん:2015/06/28(日) 03:12:02.99 ID:rotd9Dcd
>>856
03時代からsに直接構築されるから関係ないって話でしょ

858 :デフォルトの名無しさん:2015/06/28(日) 03:54:05.56 ID:z/1IIDkq
言われてみればRVO前からありますねすまんかった

859 :デフォルトの名無しさん:2015/06/28(日) 10:32:33.24 ID:4/kUOOOQ
>>855
struct String
{
String(const char*);
private:
String(String const&);
};
String a = "";

おまえVCに騙されてるだろw

860 :デフォルトの名無しさん:2015/06/28(日) 11:23:20.22 ID:5FazHgOK
>>859
おまえコンパイラに騙されてるだろ
http://melpon.org/wandbox/permlink/cSaQJHHfoIxihtzG

861 :デフォルトの名無しさん:2015/06/28(日) 11:26:18.73 ID:4/kUOOOQ
>>860
ブーメラン投げてんじゃねえよw
unko(unko const &) = delete; //{ std::printf("copy\n"); }

862 :デフォルトの名無しさん:2015/06/28(日) 12:01:49.15 ID:7lniKfSs
C++11以降は言語仕様上コピーされることが無くなったという話と
C++98時代から実質的にコピーされないことに変わりないという話を、
「コピーしない」という同じ日本語表現で言い合っているのがアスペだな。

863 :デフォルトの名無しさん:2015/06/28(日) 12:29:56.26 ID:XsTSGkpW
コピーの定義の解釈違いだろアスペ
>859のエラーはcopy elisionを行った際の
規格12.2p1の要求によるもので
コピーは発生していないと解釈するのべき
『all the semantic restrictions shall be respected』

864 :デフォルトの名無しさん:2015/06/28(日) 13:29:24.35 ID:4/kUOOOQ
>>863
解釈するのべきじゃねえだろ
String format(int a)
{
String c("c"), d("d");
if(a) return c;
else return d;
}

865 :デフォルトの名無しさん:2015/06/28(日) 14:13:38.78 ID:xQ1QrflY
アスペはコードの断片を貼るだけで会話ができません

866 :デフォルトの名無しさん:2015/06/28(日) 14:25:42.27 ID:4PA/u/+9
規格がどうとうか、うるさい奴に限って仕事できねーよなw
駄先輩でC++について詳しいのか知らんが、やたらと規格がどうとか言ってるが
全く装置動かせないw
そんなことどうでもいいから、さっさと運転しろよって言いたい

867 :デフォルトの名無しさん:2015/06/28(日) 14:33:07.62 ID:4/kUOOOQ
>>865
コード書けないカナーよりマシだ

868 :デフォルトの名無しさん:2015/06/28(日) 16:00:31.98 ID:4/kUOOOQ
>>866
そういえばその昔
規格がどうとか言わず(言えず)動きゃいい主義な先輩が
エッジトリガーな信号をレベルセンスして後でブーイング浴びてたっけな

869 :デフォルトの名無しさん:2015/06/28(日) 16:03:05.50 ID:4PA/u/+9
エッジトリガーな信号とレベルとかってC++の規格とどう関係があるのだ?

870 :デフォルトの名無しさん:2015/06/28(日) 16:09:42.09 ID:4/kUOOOQ
別にC++に限ったことじゃない
規格の話だよ

規格の話に持ち込んだのは866だ
不適切だと思うなら866に言え

871 :デフォルトの名無しさん:2015/06/28(日) 16:10:45.49 ID:4/kUOOOQ
言うと思ってたんだ
窮したやつが揚げ足とれそうなところって限られてるからな

872 :デフォルトの名無しさん:2015/06/28(日) 16:11:47.94 ID:8y2XT/gF
>>869
要求されたことと違うことを自分の思いこみで作ってしまう残念な人は規格を軽視して適当なプログラムを作りがち
と言いたいのだろう。
マ板でやれと言いたい。

873 :デフォルトの名無しさん:2015/06/28(日) 16:12:15.00 ID:vjkUYG/A
どっちもあり得る話だからなんの意味も感じられない

874 :デフォルトの名無しさん:2015/06/28(日) 16:20:40.06 ID:4PA/u/+9
>>870
文句は>>863に言え

875 :デフォルトの名無しさん:2015/06/28(日) 16:32:05.63 ID:4/kUOOOQ
>>874
863はC++の話をしてるんだが
おまえには違って見えたのか?

876 :デフォルトの名無しさん:2015/06/28(日) 16:33:10.20 ID:4PA/u/+9
C++規格なんてどうでもいい話をしてるよねw

877 :デフォルトの名無しさん:2015/06/28(日) 17:10:46.59 ID:4/kUOOOQ
>>876
おまえにはどうでもいいのはわかった
俺らには、それこそがどうでもいい

878 :デフォルトの名無しさん:2015/06/28(日) 17:19:14.31 ID:4PA/u/+9
イミフ

879 :デフォルトの名無しさん:2015/06/28(日) 17:24:49.47 ID:KlxpTm2d
で結局、超絶速いstring戻りのフォーマットライブラリは無いの?

880 :デフォルトの名無しさん:2015/06/28(日) 17:30:09.46 ID:NqiNrH0U
cppformat
boostなんて比じゃ無い位速い。
昔は正規表現使いたくて、使ってたけど最近は、boostなんて遅い、キモい、メンドいだからな。

881 :デフォルトの名無しさん:2015/06/28(日) 17:35:16.56 ID:g8B7t7Kj
もうsprintfでいいよ

882 :デフォルトの名無しさん:2015/06/28(日) 18:07:17.59 ID:SolI9ZCS
2chは言語勉強中の奴が多いからな。どうしても規格とかコメントの書き方とかそういうのに目がいく

883 :デフォルトの名無しさん:2015/06/28(日) 18:21:45.25 ID:y0HQ23je
そんな連中って小さなサンプルプログラムしか書いたことないから、仕事では全く使えない奴が多い

884 :デフォルトの名無しさん:2015/06/28(日) 18:26:08.96 ID:5+tdFZes
そんな連中て
勉強中ならそら使えんだろ

885 :デフォルトの名無しさん:2015/06/28(日) 18:31:51.17 ID:o5WpSoWe
ここで息巻いてるボクたちはネット越しに初心者を攻撃して
僅かな優越感を得ることでしか
自己を肯定することができないのです
そっとしておいてください

886 :俺はしつこいw:2015/06/28(日) 20:29:24.58 ID:4/kUOOOQ
855 :デフォルトの名無しさん:2015/06/28(日) 02:36:16.89 ID:j0ev9jQe
std::string s = boost::format()
がC++11からコピーしなくなったって?
猫に小判、無知にC++11コンパイラ

887 :デフォルトの名無しさん:2015/06/28(日) 20:38:13.09 ID:mzdNGLuj
コピーコンストラクタの呼び出し回数削減は、
かなり昔から規格で許されているが
実装は処理系依存だとオモタ

ソースコードとオブジェクトコードでアルゴリズムを等価に保つ、というのを現実的な処理量でやろうとすると
外部リンケージな関数(どんな副作用があるかわからない)の呼び出しをコンパイラが勝手に削減するとかアリエネー話だったんだけど
C++はある意味アルゴリズムを等価に保つ仕事を放棄して言語仕様業界に水爆級の一石を投じた

888 :デフォルトの名無しさん:2015/06/28(日) 21:27:46.44 ID:8y2XT/gF
言語仕様が手抜きなだけでしょ。
アルゴリズムが非決定的なのは初期化の挙動(規格の3.6.2)
とか他にもあるし。

889 :デフォルトの名無しさん:2015/06/28(日) 22:01:30.17 ID:xC0l4Cw2
テンプレートのパーシャルオーダリングを勉強してるんだけど
どうしてこんなにムズいんだぜ
C++で最も難解な文法にオイラの中で認定されました

890 :デフォルトの名無しさん:2015/06/28(日) 22:12:12.04 ID:5CpBW/i3
ほらあれだ
ムズい文法のほうが
俺スゲーできるじゃん

891 :デフォルトの名無しさん:2015/06/28(日) 22:34:37.21 ID:lVop4u01
パトローナムexplicit!

892 :デフォルトの名無しさん:2015/06/28(日) 22:36:05.66 ID:4PA/u/+9
そうか?逆じゃね?
大学数学より、灘中の算数がガンガンできるほうが
スゲーできるじゃんってならない?

893 :デフォルトの名無しさん:2015/06/28(日) 22:39:51.32 ID:lVop4u01
コピコンというかリファレンスカウンタの上昇じゃなくて?よろしくて?

894 :デフォルトの名無しさん:2015/06/28(日) 22:41:33.24 ID:SH3agkdR
>>892
アレはあくまで
「受験問題」だから解けたら凄いっていう話

研究と勉強をごっちゃにしちゃいかんよ

895 :デフォルトの名無しさん:2015/06/28(日) 22:50:15.07 ID:lVop4u01
stringごときで実体のコピーやるライブラリはクソだな

896 :デフォルトの名無しさん:2015/06/28(日) 22:52:33.58 ID:lVop4u01
で、なんでそれが言語仕様と関係あるんだか馬鹿なんすかw?

897 :デフォルトの名無しさん:2015/06/28(日) 22:52:40.93 ID:J9LsISiA
コピー命令出したんだからちゃんとコピーして欲しいわ
勝手に内部でいらんことするなよ

898 :デフォルトの名無しさん:2015/06/28(日) 23:00:25.25 ID:/m0G7Kmk
>>894
>大学数学

>研究
と同一視してる時点でアカデミアに縁ないのバレバレだよ高卒ちゃん

899 :俺はしつこいw:2015/06/28(日) 23:00:30.05 ID:4/kUOOOQ
テンポラリ1つエリミネートされただけで
「変わってしまう」アルゴリズムほど
俺すげーな中二病はちょっと思いつかん

900 :デフォルトの名無しさん:2015/06/28(日) 23:08:32.13 ID:SH3agkdR
>>898
そんな文脈の読めない揚げ足取りされても

901 :デフォルトの名無しさん:2015/06/28(日) 23:09:43.49 ID:8y2XT/gF
>>897
代用する文法が無いものはどうすんの
string s=f();→string&&s=f();
string s="";→string s("");
f( A() )→?
auto f(){A a; return a;}→?

902 :デフォルトの名無しさん:2015/06/28(日) 23:26:14.63 ID:PO3P0REA
template<class T> struct A {};
template<template <class T> class U> struct B
{
T b;
U u;
};
って、なにがマズイのしょうか?

903 :デフォルトの名無しさん:2015/06/28(日) 23:36:52.34 ID:4PA/u/+9
なにがしたいのかイミフ

904 :デフォルトの名無しさん:2015/06/28(日) 23:53:36.82 ID:8y2XT/gF
>>902
確認せずに適当に答えると
template<typename T, template<typename t> class a> struct B
{
T b;
a<T> u;
};

905 :デフォルトの名無しさん:2015/06/29(月) 08:34:16.30 ID:RBuJiewE
>>902
マズイのは
U u;

正しくは
U<int> u;

もしくは
U<T> u;
としてもよい

906 :デフォルトの名無しさん:2015/06/29(月) 08:34:58.20 ID:RBuJiewE
あ、わりい
U<T> u;
はあかんw

907 :デフォルトの名無しさん:2015/06/29(月) 18:27:24.21 ID:XqthOP/Z
流れに便乗して質問なのですが,
https://ideone.com/v36RkH

 template<class, class...> _Type
とは,_Typeの型仮引数は第二引数,第三引数で補うから,
型仮引数の情報はいらない(形式のみ必要)ので省略している,
 _Get_first_parameter<_Type<_First, _Rest...> >
は,部分特殊化を表し,_Typeの型は,_Type<F, R...>ではなく
テンプレ実引数としてあたえられた_Typeとなる.
そしてこの定義は,<_Type<_First, _Rest...> >という形式をとるすべての
_Get_first_paremeterに共有される.

という解釈であってますか?

908 :デフォルトの名無しさん:2015/06/29(月) 18:35:58.93 ID:XqthOP/Z
いや,補うというよりこうじゃないと,
部分特殊化の部分がおかしくなるから,
必要なテンプレ引数情報が引数三つ~というより,_Type<F, R...>になるから,
といった感じなんですかね.

909 :デフォルトの名無しさん:2015/06/29(月) 19:29:07.25 ID:ZS1C/3AC
template定義にclassっていう
単語を使うようにした奴は誰だよ。
本来のclassと紛らわしいだろ。

910 :デフォルトの名無しさん:2015/06/29(月) 19:34:54.89 ID:edeVcH9g
そこらへんもコンセプト入ればわかりやすくなるだろう

911 :デフォルトの名無しさん:2015/06/29(月) 19:36:55.09 ID:90QiI5GE
typenameとかながったらしいからな

912 :デフォルトの名無しさん:2015/06/29(月) 20:33:12.27 ID:RBuJiewE
>>909
それがな.... 禿...なんだ

913 :デフォルトの名無しさん:2015/06/29(月) 22:47:49.00 ID:jFniY3ju
禿はキーワード増やしたくないという理由で既存のキーワードに幾つも違う意味をねじ込む馬鹿だからな

914 :デフォルトの名無しさん:2015/06/29(月) 23:13:20.66 ID:y0FiN7DE
ある構造体に==演算子を定義する場合
friendにするべきなのでしょうか?
下記、二つの違いがわかりません。
struct A{
      bool operator==(const A& rhs){ return true;}
  friend bool operator==(const A& lhs,const A& rhs){ return true;}
};

915 :デフォルトの名無しさん:2015/06/29(月) 23:29:21.31 ID:mhfYMs/C
どっちでもええがな
左辺値が自身の型以外になるならfriendで

916 :デフォルトの名無しさん:2015/06/29(月) 23:32:07.73 ID:ZdHOzAPU
Aに(例えばintからの)implicitな変換コンストラクタがある場合、
1 == a みたいなやつ、下のやつならできるけど上のやつはできない

917 :デフォルトの名無しさん:2015/06/29(月) 23:35:26.98 ID:KCa+kJYy
自分自身を友達ってどれだけ寂しい奴やねん
友達にするのは普通、自分以外だ

どっちでも自分のプライベートにアクセス出来るから好きにしたらいいけど

918 :デフォルトの名無しさん:2015/06/29(月) 23:47:17.88 ID:mhfYMs/C
× 左辺値
○ 左項

失礼

919 :デフォルトの名無しさん:2015/06/29(月) 23:48:13.12 ID:j/9Vvva7
それこそどっちでもええわw

920 :デフォルトの名無しさん:2015/06/30(火) 00:37:31.57 ID:CHefkucA
http://www.cplusplus.com/reference/string/string/operators/
http://www.cplusplus.com/reference/string/string/operator+/

これ見てどう使えるようになるのか考えたらいい

921 :デフォルトの名無しさん:2015/06/30(火) 05:14:46.50 ID:1FGWQDn1
>>913
それは禿だけじゃねーべ

922 :デフォルトの名無しさん:2015/06/30(火) 07:34:07.22 ID:Ewdnk5mn
世の中の多くの単語には複数の意味があるが、
それを紛らわしいからこう決めた奴はバカって言ってたら…ね

923 :デフォルトの名無しさん:2015/06/30(火) 07:47:20.80 ID:bPuow3t+
友達の友達は友達だから自分自身も友達だろ

924 :デフォルトの名無しさん:2015/06/30(火) 21:03:06.08 ID:oIqAPu05
言語設計者が言語仕様をすべて検討するプログラミング言語と自然言語を比較するなんて
禿信者はどれだけアタマがいかれてるのか

925 :デフォルトの名無しさん:2015/06/30(火) 21:44:50.30 ID:9v+w0WGW
何言ってんだ禿

926 :デフォルトの名無しさん:2015/06/30(火) 23:18:20.26 ID:fdxBm1RE
qiitaのコードですが
template <
template < class, class > class Type >
struct something
{
Type < int, std::allocator < int > > container;
};

このintを外部から与えようとすると
下記の方法しかないですか?

template <
typename T,
template < class, class > class Type >
struct something
{
Type < T , std::allocator < T > > container;
};

927 :デフォルトの名無しさん:2015/07/01(水) 02:21:38.19 ID:WHdOzeax
>qiitaのコードですが

まずその某とやらが何なのか
説明してもらおうか

928 :デフォルトの名無しさん:2015/07/01(水) 04:53:05.20 ID:enJxQHpB
下記の方法しかないって、何がしたい場合の話?

template < template < typename, typename > class Type, typename T >
struct container_type {
typedef Type < T , std::allocator < T > > type;
};

template < typename Container >
struct something {
Container container;
};

something< container_type<std::vector, int>::type > something_inst;

こういう分割とかの話?

929 :デフォルトの名無しさん:2015/07/01(水) 10:00:26.37 ID:FNDbafIP
>>927
ここ
https://qiita.com/

930 :デフォルトの名無しさん:2015/07/01(水) 14:44:34.91 ID:D21eOTfg
Qiitaを知らない層がC++スレにいるなんて

931 :デフォルトの名無しさん:2015/07/01(水) 14:49:23.39 ID:nBkj9HIl
具体的な場所じゃね

932 :デフォルトの名無しさん:2015/07/01(水) 14:50:40.76 ID:UI7Zb7Dp
qiitaは光るようなスレが少ないじゃん
雑談場みたいで

933 :929:2015/07/01(水) 15:22:56.14 ID:FNDbafIP
>>931
そんな気もしたが、荒らし依頼になりたくなかった

934 :デフォルトの名無しさん:2015/07/01(水) 22:06:23.01 ID:EE30plWk
少なくともこのスレよりはマシだけどなw

935 :デフォルトの名無しさん:2015/07/01(水) 22:36:43.76 ID:9JpXnge6
そんなマイナーなサイトは知りません
万人が知ってると妄想してる低能は出家した方がいい

936 :デフォルトの名無しさん:2015/07/01(水) 23:43:40.09 ID:FNDbafIP
耳が遅い、それだけで(ry

937 :デフォルトの名無しさん:2015/07/02(木) 03:34:02.22 ID:0eGuE8Qw
ここ半年ぐらいぐぐってるとqiitaがヒットすること増えて来たけど役だったって印象はないなw
文章量が多めのつぶやきって感じでゴミが多い

938 :デフォルトの名無しさん:2015/07/02(木) 09:13:39.80 ID:B+m7sXir
for each(auto& a ... としたとき、aの型がconst付けてないのに
定数になってしまうのですがどうしてこういう仕様にしたんですかね。

939 :デフォルトの名無しさん:2015/07/02(木) 09:45:19.80 ID:nGREujsR
>>938
あなたがそうなるように書いたからです

940 :デフォルトの名無しさん:2015/07/02(木) 10:02:53.75 ID:Y0nozqak
>>938
ならないんだが

941 :デフォルトの名無しさん:2015/07/02(木) 10:03:09.77 ID:Y0nozqak
あ、忘れた

http://ideone.com/AP6KGY

942 :デフォルトの名無しさん:2015/07/02(木) 10:38:21.17 ID:c4RHuSvY
たぶんこれのことだろ
http://faithandbrave.hateblo.jp/entry/20070807/1186499965

それはそういう仕様だからRange-based forを使うべき

943 :デフォルトの名無しさん:2015/07/02(木) 11:00:26.85 ID:Y0nozqak
>>942
こんなの初めて知った

std::for_each()もC++03では要素を変更しない操作とされていたけど実際はできてたし、
C++11でははっきりと変更可能と書かれた

944 :デフォルトの名無しさん:2015/07/02(木) 21:12:59.01 ID:Gl0sBIHW
嘘も大きすぎると誰も騒がない

945 :デフォルトの名無しさん:2015/07/02(木) 22:47:14.97 ID:6qHZU/AK
どの辺が嘘なのか詳しく

946 :デフォルトの名無しさん:2015/07/02(木) 23:03:48.89 ID:Gl0sBIHW
std::for_each()もC++03では要素を変更しない操作

947 :デフォルトの名無しさん:2015/07/02(木) 23:08:54.32 ID:bYkpTfSh
昔からfor_eachは要素変更できるだろ
要素変更出来ないのは大抵あらかじめソートされたコンテナとかに対してだろ

948 :デフォルトの名無しさん:2015/07/02(木) 23:22:54.12 ID:AiijB2ck
>>946
規格票読んでよ

ISO/IEC14882:2003
§25.1 Non-modifying sequence operations
§25.1.1 For each

ISO/IEC14882:2011
§25.2 Non-modifying sequence operations
25.2.4 For each

どちらも変更しないアルゴリズムに分類されている
変更できるのは規格では保証されてない
でも変更しても未定義の動作とは書いてないので
変更出来るかもしれないし、出来ないかも知れないと取るべき

949 :デフォルトの名無しさん:2015/07/02(木) 23:27:05.67 ID:bYkpTfSh
え?そこら辺はconst_iteratorでどうにでもなるんじゃないの?

950 :デフォルトの名無しさん:2015/07/02(木) 23:27:41.27 ID:AiijB2ck
ちなみにgccの該当するヘッダを見てみると

template<typename _InputIterator, typename _Function>

_Function for_each(_InputIterator __first, _InputIterator __last, _Function __f) {

// concept requirements __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) __glibcxx_requires_valid_range(__first, __last);

for (; __first != __last; ++__first) __f(*__first); return _GLIBCXX_MOVE(__f);

}

としか書かれてないから要素のコピーではなく要素そのものをデリファレンスしてるよね
処理系によるとしか言えない

951 :デフォルトの名無しさん:2015/07/02(木) 23:50:57.68 ID:nGREujsR
C++03もC++11の規格も持ってないからドラフトから参照するけど

Effects: Applies f to the result of dereferencing every iterator in the range [first,last), starting
from first and proceeding to last - 1. [ Note: If the type of first satisfies the requirements of a
mutable iterator, f may apply nonconstant functions through the dereferenced iterator

こんなところ変わってないだろうから03から一緒でしょ

952 :デフォルトの名無しさん:2015/07/03(金) 00:13:07.46 ID:mft8l0hB
> 嘘も大きすぎると誰も騒がない
(ドヤァ)
ってしといてこれって恥ずかしいな。

間違い(だと思うもの)を指摘するときはこんな恥ずかしい事にならないよう謙虚に言うよう他山の石として気を付けるよ

953 :デフォルトの名無しさん:2015/07/03(金) 00:21:13.60 ID:9x47oHYv
>>951
その Note が追加されたのが C++11 から。
http://cplusplus.github.io/LWG/lwg-defects.html#475

954 :デフォルトの名無しさん:2015/07/03(金) 00:39:14.22 ID:P33eFhD6
規格厨
キタ━━━━━━(゚∀゚)━━━━━━ !!

955 :デフォルトの名無しさん:2015/07/03(金) 00:50:17.24 ID:zEu43QHg
規格厨が居ないとコンパイラを作ったりテストできないジャマイカ、

956 :デフォルトの名無しさん:2015/07/03(金) 00:53:38.52 ID:uO8sjm4v
コンパイラ作ったりテストしたりしてるの?
俺はしたことない

957 :デフォルトの名無しさん:2015/07/03(金) 00:54:22.74 ID:MBHMxnKO
>>954
規格票なしだとただの雑談になっちゃうんだよ

958 :デフォルトの名無しさん:2015/07/03(金) 00:55:23.46 ID:X+jFQ+8B
よ~く考えよ~
規格は大事だよ~

959 :デフォルトの名無しさん:2015/07/03(金) 01:40:50.95 ID:UHB4/heP
多くの場面では細かい規格など知らなくても結構問題なくコードは動く
しかし、規格を知らないとどうしてそうなってしまうのか分からないバグもある

960 :デフォルトの名無しさん:2015/07/03(金) 02:43:04.80 ID:ZzGaWUcQ
ここは企画相談室ではありません

961 :デフォルトの名無しさん:2015/07/03(金) 02:46:20.13 ID:MBHMxnKO
>>960
そういう話ではない
いい加減な発言をするなって話題になってるんだぜ

962 :デフォルトの名無しさん:2015/07/03(金) 05:58:31.19 ID:ZzGaWUcQ
ここは企画相談室ではありません

963 :デフォルトの名無しさん:2015/07/03(金) 09:03:30.32 ID:qS6PMyIR
ここは雑談で荒らす場所ではありません
少しはまともな話をしましょう

というかこいつ>>944だろ
論破された事を根に持って荒らしてんじゃねーっつーの
悔しかったら人に文句を言われない書き込みでもしてみろや
とりあえずあぼーんしときますね

>>959
その通りだと思う
また分からず屋が荒らし始めたんであぼーん推奨
こいつは根に持ってしつこく荒らしそうな予感

964 :デフォルトの名無しさん:2015/07/03(金) 10:43:04.60 ID:jiu6umxA
>>956
VCのベータテストにも参加したことないのか?

965 :デフォルトの名無しさん:2015/07/03(金) 11:34:36.13 ID:uO8sjm4v
>>964
Windowsはβから対応状況見るのに使うがVCはないな
ってかVCのβテスト程度が「コンパイラのテスト」なのかよwww

966 :デフォルトの名無しさん:2015/07/03(金) 11:39:52.08 ID:YJdeMD7w
>>963
すこしはまともな話をしましょうといいながら荒らしレス

アスペルガーにもほどがあるなw

967 :デフォルトの名無しさん:2015/07/03(金) 12:02:10.60 ID:jiu6umxA
>>965
うん(断言)
とくに現行バージョンの規格違反でストレスを感じていたりすると
今度こそ対応したかどうか、けっこう厳格にチェックするしね

968 :デフォルトの名無しさん:2015/07/03(金) 12:05:27.00 ID:MBHMxnKO
>>966
悔しいのう悔しいのう

969 :デフォルトの名無しさん:2015/07/03(金) 12:23:40.47 ID:uO8sjm4v
>>967
ブラウザーのHTML対応状況しらべるようなもんか。製品版出てからもチェックしないとダメだろうし大変だな・・・

970 :デフォルトの名無しさん:2015/07/03(金) 12:50:47.42 ID:scPdPWSA
>>966
今度は「アスペルガー」という言葉の意味も分からずに使ってさらに恥を晒すのか
もうやめような?無知にも程があるぞ?
あ、無知には程がないのか
だから馬鹿にされてどんどん窮地に追い込まれてファビョるしかないわけだ
己の無知さを恥じろ
無知って怖いねえ
限界知らずになるんだから
「アスペルガー」の意味と>>963の発言を対比させて論じてみ
無理だろうけど

971 :デフォルトの名無しさん:2015/07/03(金) 16:08:22.48 ID:jiu6umxA
>>969
んで、おかしいの見つけたらきっちりバグ報告もする
とにかくエラッタ欲しいからね

972 :デフォルトの名無しさん:2015/07/03(金) 20:22:42.30 ID:tI4EZg1z
>>948
規格を読んでよ
タイトルが不変を彷彿させるだけで不変だなんて書かれていない。
typedefじゃないものをtypedef名と読んだり
Postfix expressionの節を読んだらPostfixじゃない式の説明が書かれてるみたいな引っかけ

973 :デフォルトの名無しさん:2015/07/03(金) 20:28:58.57 ID:tI4EZg1z
03のfor_eachは目次が「Non-modifying sequence operations」なだけで
その中身を読めば変更可能と分かるはず

974 :デフォルトの名無しさん:2015/07/03(金) 21:09:08.93 ID:D9WxvNGl
>>972
お前もしつこいねえ
「不変アルゴリズムに分類されている」とは書いたけど「不変だ」なんて一言も言ってない
ただ規格票に書かれてない以上、C++03の関数オブジェクトで値を変更して反映されなくても
文句は言えないと言ってるんだけど
お前理解力全然足りないな

これがC++11になって", f may apply nonconstant functions through the dereferenced iterator"
とはっきり書かれたので不変アルゴリズムに分類されていようとも必ず変更は反映されると
保証されるようになったわけ

975 :デフォルトの名無しさん:2015/07/03(金) 22:59:53.84 ID:jiu6umxA
>>973
中身って実装のことか?
まあ、あの規格票自体そもそも仕様と実装の線引きがブレまくってて、
そういうところは俺も好かんのだが

976 :デフォルトの名無しさん:2015/07/03(金) 23:10:52.88 ID:ZzGaWUcQ
ここは企画相談室ではありません

977 :デフォルトの名無しさん:2015/07/03(金) 23:32:15.59 ID:i5jShfi3
>>974
デリファレンスしたものを変更して反映されなかったら
それはもはやC++ではない
ここはC++のスレだぞ

978 :デフォルトの名無しさん:2015/07/03(金) 23:53:34.75 ID:ZNzd5P28
>>973
どこを読んでそんなことを思ったのか書いてみ

979 :デフォルトの名無しさん:2015/07/03(金) 23:54:57.51 ID:jiu6umxA
「逆参照は左辺値を生じる」は、あくまでビルトイン演算子の話で
それは operator * が純右辺値を返すことを妨げてはおらんだろ

980 :デフォルトの名無しさん:2015/07/04(土) 00:09:05.14 ID:T1HfWWft
オリジナルの STL や標準ライブラリへの提案当初は明確に変更操作を禁じており、分類も
Non-modifying で間違いなかった。
http://www.open-std.org/jtc1/sc22/wg21/docs/wp/html/jan95R1/lib-algorithms.html
> Requires:
> f shall not apply any non-constant function through the dereferenced iterator.

C++98 時点では↑の要求は削除されたものの、分類は Non-modifying のままだったので
仕様として変更していいのかダメなのかは不明確になった。実際のところ変更可能となる
実装が広まっていた。それを受けて C++11 では明確に変更操作も可能であることが明記された。

C++98 から C++11 まで、10年以上も不明確だったんだから、どっちが間違いということも無い。
どっちを否定しようとしても無理筋になる。おちつけ。

981 :デフォルトの名無しさん:2015/07/04(土) 00:11:10.81 ID:js16kE+m
Noteの記述で言語仕様が規定されたり保証は生まれない
「ソースはNote」とか言ってるアフォは糞して寝ろ

982 :デフォルトの名無しさん:2015/07/04(土) 00:20:05.57 ID:T1HfWWft
>>981
それには同意。 >953 の改定は中途半端だったと思う。

変更操作を許すのが意図されているのであれば、デリファレンスのコピーを取ってそれを関数に
渡すような実装はNoteではない本文の規定によって禁止されるべきだろうと思う。

983 :デフォルトの名無しさん:2015/07/04(土) 00:23:18.17 ID:wK443U8X
【事実】提案当初は変更禁止と書かれていた
【事実】規格ではそれが削除された
【事実】規格では逆参照の結果が渡されることになっている
【事実】改訂時に「変更可能」というNoteが追加された

984 :デフォルトの名無しさん:2015/07/04(土) 01:36:30.32 ID:VV3jJEnC
>>980
> 不明確だった

(なんの前提もなしに)変更可能って言ってる奴は明らかに間違ってるわけだが

985 :デフォルトの名無しさん:2015/07/04(土) 02:26:14.39 ID:jQVKSFpl
規格票を持ってない奴に限って「ここは企画相談室ではありません」と言うんだなあ
それくらい買え

986 :デフォルトの名無しさん:2015/07/04(土) 06:15:47.45 ID:ftwwXgNP
次スレは?

987 :デフォルトの名無しさん:2015/07/04(土) 07:34:43.40 ID:MkaTbGB5
C++11では変更できる
C++11では03から特に仕様の変更無し
でもC++03では変更できる保証がありません!
ソースは出せません!!

988 :デフォルトの名無しさん:2015/07/04(土) 07:58:09.78 ID:l29Ffi6J
朝っぱらからうるさいなぁ 俺のタルタルソースかけるぞ

989 :デフォルトの名無しさん:2015/07/04(土) 08:07:59.43 ID:23HCzMnD
for文使って書くのと対して手間じゃなかろうに

990 :デフォルトの名無しさん:2015/07/04(土) 08:19:36.14 ID:negZyq4J
次すれは企画相談室

991 :デフォルトの名無しさん:2015/07/04(土) 09:39:08.72 ID:G5g709D9
次スレ
http://peace.2ch.net/test/read.cgi/tech/1435970316/

992 :デフォルトの名無しさん:2015/07/04(土) 09:43:41.85 ID:NrliYMAO
乙梅

993 :デフォルトの名無しさん:2015/07/04(土) 12:40:23.19 ID:eanKaweg
規格は初版から4版まで持ってるけど規格票は持ってないな。
信者はISO規格の代わりにJIS規格票買ったの?

994 :デフォルトの名無しさん:2015/07/04(土) 12:46:41.57 ID:62UPrMy6
ISOは英語が読めない低脳のためのものです
コンパイラは英語版の規格票を元に作られています
というか>>993はISO買ったのか?普通に本屋に並んではいるけど
規格票は約3万円ですがISOは9000円ほど出せば買えます
お徳用だろ?
>>993はまさかISOを買ってないのに言ってるんじゃないだろうね?

995 :デフォルトの名無しさん:2015/07/04(土) 12:47:27.41 ID:62UPrMy6
あ、間違えた
×ISO
○JIS

996 :デフォルトの名無しさん:2015/07/04(土) 12:54:05.21 ID:8e3bejTi
そこ間違えたらダメだろ

997 :デフォルトの名無しさん:2015/07/04(土) 12:55:23.32 ID:62UPrMy6
土曜だから昼間からビール飲んでんだよ悪いか

JISは不要な部分が多すぎてコスパ悪い
安いのはいいけど

998 :デフォルトの名無しさん:2015/07/04(土) 12:55:43.89 ID:l29Ffi6J
お徳用…?

999 :デフォルトの名無しさん:2015/07/04(土) 14:16:01.08 ID:Gg9PfjwB
費用対効果でいえばFDISが一番お得じゃね?

1000 :デフォルトの名無しさん:2015/07/04(土) 14:44:29.72 ID:5GZwA8ys
公文書が高くて買えないということ自体そもそもおかしい

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

mmpnca
lud20160131063108ca
このスレへの固定リンク: http://5chb.net/r/tech/1431187685/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C++相談室 part117 [転載禁止]©2ch.net YouTube動画>1本 」を見た人も見ています:
C++相談室 part126
C++相談室 part153
C++相談室 part154
C++相談室 part150
C++相談室 part151
C++相談室 part155
C++相談室 part149
C++相談室 part148
C++相談室 part152
C++相談室 part157
C++相談室 part161
C++相談室 part156
C++相談室 part163
C++相談室 part166
C++相談室 part159
C++相談室 part158
C++相談室 part165
C++相談室 part164
C++相談室 part162
C++相談室 part124
C++相談室 part134
C++相談室 part132
C++相談室 part142
C++相談室 part143
C++相談室 part135
C++相談室 part141
C++相談室 part137
C++相談室 part137
C++相談室 part144
C++相談室 part145
C++相談室 part146
C++相談室 part133
C++相談室 part140
C++相談室 part139
C++相談室 part136 ->動画>8本->画像>9枚
C++相談室 part138
C++相談室 part147
C++相談室 part130
C++相談室 part131
C++Builder相談室 Part21
0からの、超初心者C++相談室
Cygwin + MinGW + GCC 相談室 Part 3
Cygwin + MinGW + GCC 相談室 Part 8
C++相談室 part123 [無断転載禁止]©2ch.net
C++相談室 part129 [無断転載禁止]©2ch.net
C♯相談室 Part20
C言語相談室(上級者専用)
屯田五目須のお悩み相談室
MFC相談室 mfc22d.dll
Mac G5 中古買入相談室
河田さんによる人生相談教室
C#, C♯, C#相談室 Part75
C#, C♯, C#相談室 Part79
自営業 悩みごと相談室 40
C#, C♯, C#相談室 Part78
C#, C♯, C#相談室 Part93
MFC相談室 mfc23d.dll
C#, C♯, C#相談室 Part90
C#, C♯, C#相談室 Part91
0からの、超初心者C#相談室
自営業 悩みごと相談室 46
18:12:10 up 63 days, 19:10, 0 users, load average: 8.92, 9.24, 9.80

in 0.016914129257202 sec @0.016914129257202@0b7 on 062007