[過去ログ] C++相談室 part157 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
101: 2021/08/14(土)20:04 ID:HmVXtcJk(4/4) AAS
>>98
クラステンプレートな
102: 2021/08/14(土)21:41 ID:fhp8ilcT(4/4) AAS
autoが便利すぎて反復子の型を明示していたころのC++には戻れそうにない
103(2): 2021/08/14(土)22:18 ID:cML6JT7R(1) AAS
11よりは前は書きたくないね
104(3): 2021/08/15(日)00:20 ID:YeWgyy60(1) AAS
QZ案外初心者やなw
でも言ってることは全面的に賛成
ポインタや参照、クラス等の基本を抑えてからでないとスマポや、C++11からの要素(右辺値参照含む)の使い方もわからんと思う
105: 2021/08/15(日)06:30 ID:AkVzvB4L(1) AAS
autoもそうだが ->戻り型やusingエイリアスもだね
typedefには戻れない
106: ハノン ◆QZaw55cn4c 2021/08/15(日)09:34 AAS
>>103
確かに罰ゲームの一種になるかも‥‥私も少しずつ採り入れていくようになっていますし
>>104
もう永遠の初心者だと思っていますので、ならば、初心者の気持ちがわかるコメントでコントリビュートするのもありかと、ふつふつと
107(3): 2021/08/15(日)14:37 ID:Qb5ISoeo(1) AAS
>>104
なにこれ?
QZ「〜」
名無し「QZ初心者やな。でも賛成」
っていう自演をやろうとしたが、一個目のQZのレスをコテつけ忘れで投稿してしまったのか?
あるいははちみつとQZを同一視している?
いずれにせよとんでもない皮肉だな笑
108(1): ハノン ◆QZaw55cn4c 2021/08/15(日)15:29 AAS
>>107
いちいち反応しなくてもよろしい
>>108
つ鏡
109: 2021/08/15(日)17:48 ID:pJ9UilRh(1/3) AAS
>>107
それ、以前俺が書いたカキコを勝手にコピペされただけだよ
110: 2021/08/15(日)17:52 ID:/OoKg6VD(1) AAS
クッソささやかな体面保つためだけの自演も失敗とか本当にみじめないきものだな…
111(1): 2021/08/15(日)18:00 ID:/ZNLC/hj(1) AAS
これか。どういう意図のコピペなんだろうかね。
2chスレ:tech
112: はちみつ餃子 ◆8X2XSCHEME 2021/08/15(日)18:12 ID:oR5NZ4bd(1/2) AAS
>>111
ブラウザが記憶してたのを再度投稿してしまったとかそういうしょうもないミスじゃないかな。
JaneStyle のメモ欄で以前のレス内容を貼り付けたりそのまま投稿できたりする機能があるよ。
113(1): 2021/08/15(日)18:15 ID:pJ9UilRh(2/3) AAS
だから勝手にコピペされたっつってんだろクソ餃子め
>>104は俺じゃないから
3行目を引用したかったのか変な自演したかったのかは知らん
114: はちみつ餃子 ◆8X2XSCHEME 2021/08/15(日)18:21 ID:oR5NZ4bd(2/2) AAS
>>113
すまぬ。
本人によるものでなくてもなんらかの意図でメモしてたものを
うっかりということは起こりそうなデザインにはなっているので、
意図によるものでなくただのミスじゃねという部分が主旨。
115: 2021/08/15(日)18:25 ID:pJ9UilRh(3/3) AAS
(´・ω・`)そうか
116(1): 2021/08/16(月)15:03 ID:Gh+OcB3l(1) AAS
>>107
なんで突然はちみつ?
117: はちみつ餃子 ◆8X2XSCHEME 2021/08/16(月)15:17 ID:5E5Krdno(1) AAS
>>116
現時点でこのスレにコテ (+トリップ) 付きで書き込んでいるのがはちみつ餃子と QZ だけだからだろ。
118(2): 2021/08/16(月)19:18 ID:QgSHgEhC(1) AAS
(unsigned) intの数を受けたら何らかの演算をして (unsigned) long longの数を返す、(unsigned) double の数を受けたら何らかの演算をして (unsigned) long double の数を返す、みたいのって逐一オーバーロードを書くしかないですよね?
要するに、大きいデータ型に格上げして何らかの演算をして返したいってことなんですが
119(1): ハノン ◆QZaw55cn4c 2021/08/16(月)19:34 AAS
>>118
演算子のオーバーロードにしても関数のオーバーロードにしても、返り値の型を指定することは出来なかったかと
思いつくのは演算前の引数にあてがうキャストのオーバーロードですね
120(1): 2021/08/16(月)19:55 ID:AiYiQHL1(1/2) AAS
引数をテンプレートにして、引数Tのビット数と整数型かどうかを見て、一段階大きい型を戻り値の型とすることは出来る
121: ハノン ◆QZaw55cn4c 2021/08/16(月)20:16 AAS
>>120
pls kwsk
>>119 普通にコンストラクタのほうがいいですか‥
122: 2021/08/16(月)21:59 ID:AiYiQHL1(2/2) AAS
ごめん、めんどい・・というか
sizeof(T)と整数or浮動小数点数のbool(is_integralとかで取る)を受け取る構造体の中でtype(戻り値の型)を定義、とか考えてたけど
結局Tのサイズごとに特殊化するから手間変わらん、てのと
関数の中身が長くなるなら、オーバーロードした関数からテンプレート版(戻り値の型と引数の型がテンプレート)を呼んで、そこで中身書けば一回で済むね
123: 2021/08/16(月)23:40 ID:cwTPPWgm(1) AAS
>>118
ふつうに long long や long double を引数で受け取るって演算して返す関数を書けば
その通りの動作になりそうなんだけど、何か気に入らないの?
2つ関数書くのが嫌だってこと?(やりたいことが少なくとも2通りあるのに?)
124: はちみつ餃子 ◆8X2XSCHEME 2021/08/17(火)00:20 ID:yPn/BtRt(1) AAS
大きい型というのは一段階大きい型という意味なのかな?
型の大きさは処理系 (アーキテクチャ) 依存だし、
ポータブルに書こうと思ったら思ったよりも面倒な感じ。
主要なアーキテクチャだけ対処できればいいなら
8 → 16 → 32 → 64
の拡張が出来ればいいので用意するパターンはそんなに多くはない。
ちなみに Windows の long double は double と同じ大きさだよ。
125: 2021/08/17(火)02:08 ID:rNAqXouz(1) AAS
何種類か関数があるならtraitsを作成するのもありじゃない?
126: 2021/08/18(水)04:11 ID:ReVsRUuR(1) AAS
関数読んだら1段階デカい型が返ってくるなんて使う側でも面倒が起きそうだな
127: 2021/08/18(水)04:23 ID:TZ94eDdV(1) AAS
まぁ、戻り値にも使用できるテンプレートの追加の型を関数内でconstexpr的に定義出来たらいろいろ面白いことが出来そうではあるなw
128(1): 2021/08/19(木)15:14 ID:9cCAU3aU(1/7) AAS
話は勝手に変わるけど、
{ 1,2,3,4,5 }
のような書き方が initializer_list になる場合とならない場合を全て知りたいけど
良く分からないので、誰か教えてくれまいか。
129(1): 2021/08/19(木)15:21 ID:9cCAU3aU(2/7) AAS
>>128
的を外しているかも知れないけど、その書き方をAと書くとすると、どんな文脈でも
A自体が最初に必ずいったん initializer_list<T> になった後にそれぞれの文脈で処理されるという
ことなのか、あるいは、
auto x {・・・};
auto x = {・・・};
auto x = TYPE {・・・};
func({・・・});
のようにいろいろな書き方や文脈が変わるとそもそも A は意味論的にすら
initializer_list<T> を経由せずにそれぞれ独自に解釈されて処理される
省1
130(1): 2021/08/19(木)15:24 ID:9cCAU3aU(3/7) AAS
あと、良く分からないのが、
struct CPerson {
・・・
CPerson(int a, int b, int c) {・・・} //(1)
};
とあった場合、
1. CPerson a{1,2,3};
2. CPerson a={1,2,3};
3. CPerson a=CPerson{1,2,3};
のどれを書いても多分、(1)が呼び出される気がするけど、
省5
131: はちみつ餃子 ◆8X2XSCHEME 2021/08/19(木)16:38 ID:z/GAGLjl(1/6) AAS
>>129
> initializer_list<T> を経由せずにそれぞれ独自に解釈されて処理される
initializer_list を経由しないことはある。
おおざっぱには initializer_list を受け取る文脈では initializer_list だし、
推論が必要なとき (auto やテンプレート) にも initializer_list に推論されるが、
そうでないときは initializer_list を経由しない。
132(1): はちみつ餃子 ◆8X2XSCHEME 2021/08/19(木)16:48 ID:z/GAGLjl(2/6) AAS
>>130
優先順位がある。
1. 2. 3. のいずれも initializer_list としての解釈が「優先される」。
initializer_list を受け取るコンストラクタが存在しなければ
三引数のコンストラクタが呼出される。
133(1): 2021/08/19(木)16:54 ID:9cCAU3aU(4/7) AAS
>>132
なるほど。確認だけど、
1. CPerson a{1,2,3};
2. CPerson a={1,2,3};
3. CPerson a=CPerson{1,2,3};
4. CPerson a(1,2,3);
5. CPerson a=CPerson(1,2,3);
は、どれも3引数のコンストラクタで受け取ることは可能ということでOk?
1. 2. 3. は、initializer_list を受け取るコンストラクタでも受け取ることが可能?
4. 5. は、initializer_list を受け取るコンストラクタでも受け取ることは不可能??
134(2): はちみつ餃子 ◆8X2XSCHEME 2021/08/19(木)17:08 ID:z/GAGLjl(3/6) AAS
>>133
(initializer_list を受け取るコンストラクタが無ければ) いずれも 3 引数のコンストラクタが起動されるが、
5. は 3 引数のコンストラクタでオブジェクトを構築した上で a にコピーする。
(コピーコンストラクタ、またはムーブコンストラクタが起動する。)
ただし RVO が有効な状況ではコピーやムーブはが省略されるので 5. は 4. と同じ。
そしてこの場合には関係ないが、波括弧によるコンストラクタ起動では引数の暗黙の型変換を許さない
といった重要な違いがある。
(initializer_list を受け取るコンストラクタが有る状況でも) 4. と 5. は initializer_list とは解釈されない。
135(2): 2021/08/19(木)17:14 ID:9cCAU3aU(5/7) AAS
>>134
1. 2. 3. は、initializer_list を受け取るコンストラクタでも受け取ることが可能?
4. 5. は、initializer_list を受け取るコンストラクタでも受け取ることは不可能??
については?
136(2): はちみつ餃子 ◆8X2XSCHEME 2021/08/19(木)17:19 ID:z/GAGLjl(4/6) AAS
>>135
それが区別できるだけのルールは既に提示したつもり。
137: 2021/08/19(木)17:21 ID:9cCAU3aU(6/7) AAS
>>136
すまん。もう一度明言してくれるとありがたい。
138(1): 2021/08/19(木)17:27 ID:td+NCu9W(1/2) AAS
template <int N> void test(std::bitset<N>& arg);
int main()
{
std::bitset<1ull> lvalue;
test(lvalue);
}
これ、Nが推定できないのはなんで?
139(1): 2021/08/19(木)17:28 ID:td+NCu9W(2/2) AAS
すまん、自己解決
unsigned long long Nが正解だった
140: はちみつ餃子 ◆8X2XSCHEME 2021/08/19(木)17:30 ID:z/GAGLjl(5/6) AAS
>>135
> 1. 2. 3. は、initializer_list を受け取るコンストラクタでも受け取ることが可能?
はい。 可能です。
> 4. 5. は、initializer_list を受け取るコンストラクタでも受け取ることは不可能??
はい。 不可能です。
ところで >>134 で、オブジェクトを構築した上でコピーするのは 5. と述べたけど 3. もそうやな。
141: はちみつ餃子 ◆8X2XSCHEME 2021/08/19(木)17:33 ID:z/GAGLjl(6/6) AAS
>>138-139
正解は size_t だよ。
size_t が具体的にどの整数型に対応するかは処理系定義なので
もちろん unsigned long long と等価なこともあるだろうけど。
142: 2021/08/19(木)17:40 ID:9cCAU3aU(7/7) AAS
>>136
念のため、その「述べた」はずのルールがどの文章だったのか教えてもらえれば
ありがたい。
143: 2021/08/19(木)22:54 ID:CH0dz2ka(1) AAS
vector<long long>を取る関数にvector<int>を渡すと、その引数はvector<long long>にキャストされる
で、vector<int>を取る関数にvector<long long>を渡すのはNG
この理解は合ってますでしょうか
144: 2021/08/19(木)23:03 ID:/B0HDd6y(1) AAS
間違ってる
vector<long long>とvector<int>には何の関係もない
intとstringに関係がないのと同じくらい関係ない
145: 2021/08/20(金)11:13 ID:5K/SmrCp(1/2) AAS
pair<int, int> は pair<long long, long long>にキャストできるけど
vectorにそういうコンストラクタはないな
146(2): 2021/08/20(金)12:13 ID:ssGfr3Zr(1) AAS
>>103
VS6.0の頃は地獄だったよ
forループの変数は生キノコるわ例外出たら自動変数の破棄全部ぶっ飛ばすわでMSはクソの集大成だと確信していたわ
147: 2021/08/20(金)12:42 ID:5K/SmrCp(2/2) AAS
例外処理が2系統、数え方によっては3系統あるのがね
148(1): 2021/08/20(金)15:19 ID:Pb4opnB5(1) AAS
STOUT を STDOUT に空目してこそプログラマ脳
「ミロ」そっくりの缶ビール 子どもが誤飲し販売禁止に(豪) - Yahoo! JAPAN
外部リンク:article.yahoo.co.jp
子どものみならず大人にも大人気のココア味の麦芽飲料「ミロ」は、世界中で愛されている。このほどオーストラリアの企業が、
ミロにそっくりのパッケージデザインで缶ビールを製造したことにより「子どもが間違えて飲んでしまった」という苦情が届いた。
これにより同製品の広告使用禁止が言い渡されたことを『news.com.au』などが伝えている。
問題の缶ビールは、豪ビクトリア州にある企業「Howler Brewing Company」の「Chocolate Milk Stout」というチョコレート風味の黒ビールだ。
缶のデザインは有名な麦芽飲料「ミロ」を真似たもので、お馴染みの緑色を背景に製品名や販売会社を示す文字の色やフォントまで同じデザインとなっている。
同社はこれまでにも、Instagramや炭酸飲料「スプライト」など認知度の高いロゴデザインを真似た製品を作り出している。
149(2): 2021/08/20(金)17:52 ID:BMARPdQo(1/2) AAS
関数オブジェクトじゃなくて関数を記述するメリットってなんかある?
テンプレートは近々関数オブジェクトの方でも使えるようになるんでしょ?
150(1): 2021/08/20(金)19:08 ID:n19OoAH+(1) AAS
>>149
タイプ数が少ない、くらいかね。
151: 2021/08/20(金)20:12 ID:BMARPdQo(2/2) AAS
>>150
じゃあそのうち「関数はレガシーな書き方なので関数オブジェクトを使用するようにしましょう」とか言われるようになるの?
152: 2021/08/21(土)00:32 ID:E2GGZp0E(1/4) AAS
>>149
複数の関数から呼ばれる関数どうすんのさ
グローバル変数や引数にいちいち入れるの?
153: 2021/08/21(土)00:37 ID:E2GGZp0E(2/4) AAS
>>146
forの変数スコープは回避策あったやん
98年発売なんでもうちょっとどうにか出来たのではとも思うが
154(1): 2021/08/21(土)00:45 ID:E2GGZp0E(3/4) AAS
あ、すまんラムダじゃなくて関数オブジェクトか
確かにタイプ数くらいしか思いつかんけど
テンプレートは既に使えるのでは?関数テンプレートに出来て関数オブジェクトに出来ないテンプレートの使い方あったっけ
155(1): 2021/08/21(土)10:46 ID:+K/WXdke(1) AAS
>>148
日本でも煙草を真似したデザインのチョコレート菓子があったけど
間違って煙草食った子供が死んだとか裁判になったとか聴かないな
おそらくあったんだろうな
156: 2021/08/21(土)12:15 ID:t0h3aTQf(1) AAS
>>154
実体化の制御かね。
関数テンプレートは使用されない限りエラーにならない。
SFINAEもそうじゃなかったっけ?
157: 2021/08/21(土)13:42 ID:E2GGZp0E(4/4) AAS
クラステンプレート内の普通のoperator ()だとそうだね
operator ()がテンプレートの場合ならほぼ関数テンプレートと同じ事出来るとは思うけど
文法上、明示的にテンプレート引数指定する際、関数と共通の書き方には出来ないな・・
158: 2021/08/21(土)20:47 ID:7GAoG1Iq(1) AAS
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しでView types参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
省6
159: 2021/08/21(土)22:35 ID:o/sUihIV(1) AAS
質問です。
std::array ary = { 1, 2 };
↑の{}で初期化すると、
要素数を自動推論できるようにするにはどう実装すればいいんでしょう?
160(1): 2021/08/21(土)22:55 ID:+FOhqLVw(1) AAS
推論補助だと思う
外部リンク[html]:cpprefjp.github.io
161: 2021/08/22(日)01:17 ID:maGRuunL(1) AAS
>>155
食ったところで飲みこまずにペッペッて吐き出すだろ
162: 2021/08/22(日)04:31 ID:Roj0wExz(1) AAS
g++ -std=c++17
163: 2021/08/22(日)12:59 ID:0Cz6ueFz(1) AAS
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
外部リンク[html]:nim-lang.github.io
省6
164: 2021/08/22(日)18:45 ID:gNvESTNy(1/3) AAS
std::chrono::time_point::time_since_epoch()が返すエポックタイムの原点はいつですか?
もし具体的に規定されていないとしても、
ミリ秒パートが0であることは保証されていますか?
165: 2021/08/22(日)19:20 ID:gNvESTNy(2/3) AAS
ある意味自己解決しますたorz
外部リンク[html]:cpprefjp.github.io
>C++17 以前の場合、system_clock のエポックがどの時間を指しているかは未規定だが、ほとんどの処理系は UNIX 時間(1970年1月1日0時0分0秒)を指している
>C++20 以降の場合、system_clock のエポックは必ず UNIX 時間(1970年1月1日0時0分0秒)を指す
しかし(特にC++17以前において)ミリ秒パートが0が保証されているのかどうかがはっきりしませんぬ、
166: 2021/08/22(日)19:28 ID:VeL/IzCV(1) AAS
生年月日をUNIX時間で表現できないオッサンはこのスレにどのくらいいるの?
167(3): 2021/08/22(日)21:27 ID:gNvESTNy(3/3) AAS
生年月日ならミリ秒まで言える必要は無いが
ログの時刻を極力正確に(WindowsのGetLocalTime()と同じ時刻で)記録したいのでつ∀`;)
168: 2021/08/23(月)04:13 ID:F733kpwr(1) AAS
1970年以前生まれの50代以上のオッサン
169: 2021/08/23(月)16:50 ID:Rrt4HCug(1) AAS
B.C.
A.D.
B.E.
170: 2021/08/23(月)22:05 ID:xWEF4I0D(1/2) AAS
B.E.って何ですか
UCとSEとかRCとかじゃないの
171: 2021/08/23(月)22:52 ID:xWEF4I0D(2/2) AAS
ていうかsystem_clockはC++17以前からtime_tと相互変換できるのに(system_clock::from_time_t()、system_clock::to_time_t())、
エポックがどの時間を指しているかは未規定とかおかしくね↑?
172: 2021/08/23(月)23:20 ID:AuTnTHJo(1) AAS
別におかしくない
変換時にエポックの差の分ずらせばいいだけだろ
173(1): 2021/08/23(月)23:31 ID:sPTJEjpv(1) AAS
そんなことよりなんでtime_tは符号なしなん?
64bit拡張するときに符号ありにしとけば166みたいな煽りを受けずにすんだのに
174(1): 2021/08/24(火)00:03 ID:24MephMZ(1) AAS
符号なし使うのは総じてセンスないよね
175(1): 2021/08/24(火)07:17 ID:NEyNeI43(1) AAS
符号付き整数はwrap aroundしたときの挙動が処理系依存か何かだったはず……
ハードウェア例外を生じるやつがあるらしい
176: 2021/08/24(火)07:52 ID:4Ohx7QuI(1) AAS
>>173
純粋にプログラミングスキルの話と受け取った>>167に謝れ
177: 2021/08/24(火)08:21 ID:NErefsYh(1) AAS
>>175
オーバーフローしたときにラップアラウンドさせる使い方が数値計算としては特殊だからねぇ。
178: 2021/08/24(火)15:27 ID:WZMj7UxV(1) AAS
>>167
ntp使え
179(1): 2021/08/24(火)17:48 ID:DexxKsi1(1) AAS
>>174
time_tを符号なしにしたやつはアフォだと思うが
それをもって符号なしを使うやつ全員が例外なくアフォというのは
早まった一般化という誤謬だ
180: 2021/08/24(火)22:08 ID:OPjw/0cg(1) AAS
>>160
なるほど!ありがとうございます
181: 167 2021/08/25(水)00:50 ID:MXKFEwSS(1) AAS
そういやーまだご存命の方もいらっしゃるんでしたね
>>179
符号付きにしたら2038年問題が2004年問題になってた
人類は間に合わなかった
182: 2021/08/25(水)07:34 ID:VHSVWUHA(1) AAS
30年も猶予があったのにな
183: 2021/08/25(水)10:43 ID:M5WZn8fZ(1) AAS
ヒトラー「2036年、人類と云われる者は居なくなっている」
184: 2021/08/26(木)16:49 ID:WPRv8+9f(1) AAS
関東大震災だって100年も猶予があっても何もしない國ですし
185: 2021/08/26(木)21:09 ID:xnTAPql6(1) AAS
色々やってるぞ
庶民を助ける政策をやってないだけで
186(1): 2021/08/27(金)17:50 ID:BFKMFKNN(1) AAS
Twitterリンク:cpp_akira
最近はC++の発表資料を公開すると「Rustでいいじゃん」というコメントがたくさんつくのか…。
Rustへの言及とか一文字も書いてないのに。
普及活動だと思うけど、さすがに嫌がらせチックに見える。
Twitterリンク:moriyoshit
C++の件に限らず、旧来からある言語の長所短所を理解せずに、
表面的に新言語を推す発言を見ると、
果たして当人は新しい言語の方も理解できているのだろうか、
という疑念をもってしまう...
Twitterリンク:5chan_nel (5ch newer account)
187: 2021/08/27(金)19:27 ID:wbifwX7a(1) AAS
>>186
Rustはいらんけど、制約を強化してコンパイルエラーを増やしたc++--は欲しいなぁ。
スライシングはすべてコンパイルエラー、ダウンキャストはメンバー関数とフレンド関数のみ使用可能
new deleteはメンバー関数とフレンド関数のみ使用可能(global operator new/deleteは廃止)
といったメモリ周りの制約強化は欲しい。
188: 2021/08/28(土)14:03 ID:dCOU+NEa(1) AAS
Rustを使って欲しいなら、そう言えばいいのに
人のすることを小馬鹿にするような態度で来るから敵と見られるんだよ
コミュ障にも程がある
189: 2021/08/28(土)18:35 ID:iJLWqDs6(1) AAS
インテルコンパイラの-fastには-staticが含まれてるけど、なんでスタティックリンクは速いの?
190: 2021/08/28(土)18:49 ID:Ovc44+68(1) AAS
ライブラリ使うときのロードの手間がなくなるからね
191: はちみつ餃子 ◆8X2XSCHEME 2021/08/28(土)23:41 ID:V8MBAFoh(1) AAS
スタティックリンクにすると最適化の情報が増えるというのもあると思う。
C/C++ では翻訳単位ごとにコンパイルしてからリンクするという工程を踏むから、
コンパイル時には他の翻訳単位の情報を知らず、他の翻訳単位の情報を利用した
最適化が出来なかった。
今では LTO が当たり前になって、リンク時にあらためてコンパイラに戻して最適化
させる仕組みがあるんだけど、バイナリ自体が別物だとその仕組みを使えない。
192(1): 2021/08/29(日)13:13 ID:h29TClHM(1/6) AAS
std::threadってスタックサイズを指定できないってマジ?
仮想メモリを使えない組み込み用途だとどうすんじゃ……
193(1): 2021/08/29(日)13:20 ID:kSqJuAzn(1) AAS
native_handle()関数で環境に応じたスレッドハンドル(linuxならpthread)を取得できるから、スタックサイズを設定するところだけ環境ごとに用意して切り替えればいいよ
194: 2021/08/29(日)13:28 ID:h29TClHM(2/6) AAS
Windowsみたいにスレッドハンドルを生成したときはスタックサイズ指定済のとき、みたいな
組み込み用OSがあったらどうすんじゃ……
195: 2021/08/29(日)13:46 ID:h29TClHM(3/6) AAS
とわいえμITRONのcre_tsk()は
>cre_tsk でスタック領域を明示しない場合のタスクのスタックや割込みハンドラ/割込みサー
>ビスルーチンのスタックは、OS が用意する「スタック用メモリ」から割り当てられます。
>スタック用メモリのサイズを定義する STKMSZ の標準値は 0 で、この場合、main 関数が使って
>いる処理系のデフォルトのスタック領域(スタックセクション)を、OS のスタック用メモリとし
>ます。この場合の実際のスタックサイズは、リンカでのセクション設定とスタートアップルー
>チンでの初期スタックポインタ値で決まります。
みたいなことが書いてある
C/C++界隈はみんな頭おかしい……
196(1): 2021/08/29(日)13:55 ID:h29TClHM(4/6) AAS
ゴメ勘違いcre_tsk()(IDがOSが自動割り当てのやつはacre_tsk())は
第2引数に与えるT_CTSK構造体でタスクごとにスタックサイズを指定できたわ;;;
なんでstd::threadではできないんじゃ……
197(1): 2021/08/29(日)14:18 ID:vSvS+48a(1) AAS
コイツ前スレでも連レスしてたムーブ全く理解してないバカだよね?
NGしたいからトリップつけてください
198: 2021/08/29(日)14:25 ID:x8xWTwL3(1) AAS
>>192
標準じゃ無理でしょ
全てのスレッドを変えたいならリンカのオプションとかで指摘できる環境もあるけど
boost::thread使って
boost::thread::thread_attribute::set_stack_size()
で設定するがよろし
>>193
native_handle()関数でハンドル取れると言う事はスレッド開始してる
開始済みスレッドのスタックサイズを変えられる環境って聞いたことない
199: 2021/08/29(日)14:30 ID:AWkeWwKB(1) AAS
>>196
ほんと組み込み屋は馬鹿だな
200: 2021/08/29(日)16:52 ID:h29TClHM(5/6) AAS
>>197
完璧な理解をサンプルコード付きで示したやろうが;;;
論点はなんでムーブに置き換えられるケース(明示的にstd::move()したら明らかに効率的なコードになる
において最適化でムーブにならないのか?なのだが高度すぎるのか文盲か故に>>197が付いてこれていないだけ
>>197はブーメラン
上下前次1-新書関写板覧索設栞歴
あと 802 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.046s