前スレ
C++相談室 part160
https://mevius.5ch.net/test/read.cgi/tech/1649979572/
C++相談室 part161
■ このスレッドは過去ログ倉庫に格納されています
2022/05/21(土) 21:23:29.59ID:kYXfaM+5
2022/05/21(土) 21:44:08.96ID:G0xPeqqL
C(ちんちん)+(ぷら)+(ぷら)
2022/05/22(日) 00:57:58.97ID:SQ8NOhuX
おいおいまだ続けんのかよ!
2022/05/22(日) 03:20:20.13ID:sZoQvYay
ODRってC++処理系の仕様?
処理系はODRの記述を含まない仕様だけあればその通り作ったら
合理的な手間で検知可能な範囲のODR違反コードをエラーにする
ふるまいになるというのが当然で、つまりODRは仕様の結果であってODRを仕様に含めるのは論理的に冗長という印象
どっちかというとODRは正しく動くためにプログラマーが従わねばならないルール、という認識やったわ、
この観点ではinlineがODRの例外というのは例外も糞もなくてそんなプログラムは書いたらあかんからODR違反
コンパイラが合理的な手間でそれを検出できなかったり、それがあってもコードの動きに破綻が無いこととは関係無い
的な、
処理系はODRの記述を含まない仕様だけあればその通り作ったら
合理的な手間で検知可能な範囲のODR違反コードをエラーにする
ふるまいになるというのが当然で、つまりODRは仕様の結果であってODRを仕様に含めるのは論理的に冗長という印象
どっちかというとODRは正しく動くためにプログラマーが従わねばならないルール、という認識やったわ、
この観点ではinlineがODRの例外というのは例外も糞もなくてそんなプログラムは書いたらあかんからODR違反
コンパイラが合理的な手間でそれを検出できなかったり、それがあってもコードの動きに破綻が無いこととは関係無い
的な、
2022/05/22(日) 09:08:20.74ID:1lbS1FjX
ちんちん!シュッ!シュッ!シュッ!
7はちみつ餃子 ◆8X2XSCHEME
2022/05/22(日) 09:12:58.50ID:9X/55aF0 >>5
One definition rule は仕様に項目がある。
https://timsong-cpp.github.io/cppwp/n3337/basic.def.odr
インライン関数は同じアドレスを持つ (事実上統合することの要求) というのも仕様にある動作。
https://timsong-cpp.github.io/cppwp/n3337/dcl.fct.spec
no diagnostic と書いてある部分については (可能であれば処理系も検出するけど) どちらかというとユーザに対する要求というニュアンスはあるかも。
One definition rule は仕様に項目がある。
https://timsong-cpp.github.io/cppwp/n3337/basic.def.odr
インライン関数は同じアドレスを持つ (事実上統合することの要求) というのも仕様にある動作。
https://timsong-cpp.github.io/cppwp/n3337/dcl.fct.spec
no diagnostic と書いてある部分については (可能であれば処理系も検出するけど) どちらかというとユーザに対する要求というニュアンスはあるかも。
8デフォルトの名無しさん
2022/05/22(日) 19:47:14.24ID:WUnKKX5R 有料無料関係なしで最高のIDEってなに?
9ハノン ◆QZaw55cn4c
2022/05/22(日) 19:52:14.59ID:rj0GqvkC >>7
>インライン関数は同じアドレスを持つ (事実上統合することの要求)
それはもうインラインではないですね…
そうではなくて、extern なインライン関数をリンクする際には、同一のアドレスであるべき、という意味でしかないでしょう、つまり私の実装案
https://mevius.5ch.net/test/read.cgi/tech/1649979572/996
>実装的には inline のついた関数定義が外部にリンクされる可能性があれば、すなわち extern な iniline 関数があれば、リンクのためのコード体を、各所に inline に展開されるコード体とは別に(こっそり)用意しておく、見たいな感じで十分に実装可能ですね
を支持する内容であり、extern な inline 関数において定義を持たないコンパイル単位にでは inline の指示があっても inline しなくてもいいといっているに等しいですね‥‥
7.1.2.4
(略)外部リンクをもつインライン関数は、すべての翻訳単位で同じアドレスを持たなければならない。
外部インライン関数内の静的ローカル変数は、常に同じオブジェクトを参照する。
externインライン関数の本体内の文字列リテラルは、異なる翻訳単位で同じオブジェクトを指す。
>インライン関数は同じアドレスを持つ (事実上統合することの要求)
それはもうインラインではないですね…
そうではなくて、extern なインライン関数をリンクする際には、同一のアドレスであるべき、という意味でしかないでしょう、つまり私の実装案
https://mevius.5ch.net/test/read.cgi/tech/1649979572/996
>実装的には inline のついた関数定義が外部にリンクされる可能性があれば、すなわち extern な iniline 関数があれば、リンクのためのコード体を、各所に inline に展開されるコード体とは別に(こっそり)用意しておく、見たいな感じで十分に実装可能ですね
を支持する内容であり、extern な inline 関数において定義を持たないコンパイル単位にでは inline の指示があっても inline しなくてもいいといっているに等しいですね‥‥
7.1.2.4
(略)外部リンクをもつインライン関数は、すべての翻訳単位で同じアドレスを持たなければならない。
外部インライン関数内の静的ローカル変数は、常に同じオブジェクトを参照する。
externインライン関数の本体内の文字列リテラルは、異なる翻訳単位で同じオブジェクトを指す。
10はちみつ餃子 ◆8X2XSCHEME
2022/05/22(日) 20:04:27.44ID:9X/55aF02022/05/22(日) 20:07:42.95ID:ZvvsRMN9
12はちみつ餃子 ◆8X2XSCHEME
2022/05/22(日) 20:15:45.42ID:9X/55aF0 >>8
人によって使いやすさって違うからアドオンとかドキュメントの量とかが重要になってくるんだよ。
いくら潜在的に良い出来栄えであってもちょっとしたカスタムを全部自分で書かなきゃならないようでは面倒くさすぎる。
どこをどういじればいいのかいちいちソースコードを見ないとわからないのではダルい。
なんだかんだ不満があってもユーザ人口の多いものは全体としては良い選択になりがち。 物量重要。
人によって使いやすさって違うからアドオンとかドキュメントの量とかが重要になってくるんだよ。
いくら潜在的に良い出来栄えであってもちょっとしたカスタムを全部自分で書かなきゃならないようでは面倒くさすぎる。
どこをどういじればいいのかいちいちソースコードを見ないとわからないのではダルい。
なんだかんだ不満があってもユーザ人口の多いものは全体としては良い選択になりがち。 物量重要。
2022/05/22(日) 20:19:45.26ID:sBUJB3wj
vs以外だとIDEっていうよりエディタとコマンドでやってるイメージ
ボーランドとか死にかけだしなあ
ボーランドとか死にかけだしなあ
15デフォルトの名無しさん
2022/05/22(日) 20:37:44.89ID:WUnKKX5R2022/05/22(日) 20:39:19.63ID:rj0GqvkC
17はちみつ餃子 ◆8X2XSCHEME
2022/05/22(日) 20:50:26.55ID:9X/55aF02022/05/22(日) 22:42:48.81ID:rj0GqvkC
>>17
なるほど。私の元の主張に反するのですが、規格上はそのように誘導されてしまうのですね…‥(呆然)
なるほど。私の元の主張に反するのですが、規格上はそのように誘導されてしまうのですね…‥(呆然)
2022/05/22(日) 22:53:10.16ID:j/hmX3ds
www.youtube.com/watch?v=uaUmAUMvs2o
20デフォルトの名無しさん
2022/05/28(土) 13:34:18.53ID:kIghR+Cp C++入門書でオススメがあったら教えてください
2022/05/28(土) 13:51:21.59ID:y4EmUyIA
昔からC++を使ってる人が多いから最近の入門書なんて誰も知らん
https://cppmap.github.io/learn/books/
https://cppmap.github.io/learn/books/
22デフォルトの名無しさん
2022/05/28(土) 14:07:22.40ID:kIghR+Cp >>21
多謝多謝!
多謝多謝!
2022/05/28(土) 15:19:08.43ID:72vE6z5l
禿本の5、来ないね・・・
24はちみつ餃子 ◆8X2XSCHEME
2022/05/28(土) 15:44:53.73ID:IqCM7SI4 C++ はそれなりに歴史が長いから仕様も変わってるし思想や習慣の変化もある。
上述で私は「inline は ODR の例外の意味!」と主張したけどさ、 D&E を読むと (inline 指定導入初期の判断としては)
「コンパイラによるインライン化の判断がザコなので指定できるようにした」
という意味のことを書いてあって、大元はやっぱりインライン化の指定なんだよね……。
色んな事情が絡むし、単純に C++ が巨大なのでどうせ一冊でちゃんとした理解にはならないと思う。
適当なやつをどれから読み始めてもいいんじゃないかね。
まあ、あまり古い奴は避けた方がよいだろうというのが最低限の基準かな。
上述で私は「inline は ODR の例外の意味!」と主張したけどさ、 D&E を読むと (inline 指定導入初期の判断としては)
「コンパイラによるインライン化の判断がザコなので指定できるようにした」
という意味のことを書いてあって、大元はやっぱりインライン化の指定なんだよね……。
色んな事情が絡むし、単純に C++ が巨大なのでどうせ一冊でちゃんとした理解にはならないと思う。
適当なやつをどれから読み始めてもいいんじゃないかね。
まあ、あまり古い奴は避けた方がよいだろうというのが最低限の基準かな。
2022/05/28(土) 16:12:25.28ID:m/lYnlWz
C 言語でなぜかC++のコメント行がいつの間にか許されている不思議
2022/05/28(土) 16:25:05.55ID:gMoQJtfo
なぜかってC99でサポートされたからではなくて?
27デフォルトの名無しさん
2022/05/28(土) 17:21:17.26ID:DrsyU/Zk 違うでしょうなあ。
2022/05/28(土) 19:31:09.65ID:72vE6z5l
> いつの間に
情弱からはこう見えるようだな
情弱からはこう見えるようだな
29ハノン ◆QZaw55cn4c
2022/05/28(土) 20:36:31.97ID:HcUv+Nxj2022/05/31(火) 21:24:16.90ID:YEMisgK+
このコードがコンパイルできないんだけど、なんで?
struct hoge {
std::map<int, std::unique_ptr<struct hoge>> m = {};
void x() {
struct hoge &r = *this;
r = *(m.begin()->second.get()); // ここがまずい
}
};
struct hoge {
std::map<int, std::unique_ptr<struct hoge>> m = {};
void x() {
struct hoge &r = *this;
r = *(m.begin()->second.get()); // ここがまずい
}
};
2022/05/31(火) 21:37:16.47ID:Cpwrpvdc
コピーコンストラクタが呼ばれて、最終的にmapのunique_ptrがコピーできないってことか。。。
C++98の人間だし10年以上離れてたから最近のC++まったくわからんわ・・・
C++98の人間だし10年以上離れてたから最近のC++まったくわからんわ・・・
2022/05/31(火) 21:49:44.41ID:prs/eEEO
33蟻人間 ◆T6xkBnTXz7B0
2022/05/31(火) 22:00:19.02ID:eSF5ElRz rは*thisの別名。
*thisの所有物を*thisにコピー。だめ。
*thisよりも高位じゃないと。。。
*thisの所有物を*thisにコピー。だめ。
*thisよりも高位じゃないと。。。
34はちみつ餃子 ◆8X2XSCHEME
2022/05/31(火) 22:30:18.12ID:+LJ4L5Ht 根拠。
https://timsong-cpp.github.io/cppwp/n3337/container.requirements#tab:containers.allocatoraware
コンテナを代入するとき、コンテナの要素の型は CopyAssignable であり、
コンテナに対して CopyInsertable であることを要求する。
https://timsong-cpp.github.io/cppwp/n3337/container.requirements#tab:containers.allocatoraware
コンテナを代入するとき、コンテナの要素の型は CopyAssignable であり、
コンテナに対して CopyInsertable であることを要求する。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ】ふるさと納税でも「新米が売れない」 米農家の最悪のシナリオは「仮払金返納」 鈴木農水相は「農協」の代弁者か [ぐれ★]
- 【沖縄】『ジャングリア沖縄』開業4か月で「ガラガラ」「当然の結果」衝撃の閑散ぶりで気になる来場者数 [煮卵★]
- 【クマ】「人間が優先で何をしてもいいとなったら、世の中はおかしなことになる」「クマがいる自然を自慢してもいい…」北海道獣医 [少考さん★]
- 【NHK】タモリ「滋賀県の人に『滋賀県よりも琵琶湖の方が広いよね』って言ったら…」 [少考さん★]
- 「風呂キャンセル界隈」の夫と離婚できる? 不潔すぎる配偶者に絶望する妻たちの切実な声 [少考さん★]
- 日銀が円安進行を警戒 物価高に懸念、利上げ観測も きっかけは高市首相の経済対策で財政規律が悪化するとの懸念による「日本売り」★2 [ぐれ★]
- 小林鷹之「経済の中国依存から脱却して将来的にはゼロに近づける。世論が高市首相を批判すれば誰が得をするか考えて欲しい」★2 [931948549]
- んなぁ…🍬…んなたん起きたのらよぉ🍬✋…🏡
- 高市総理叩いてる人たちってじゃあ中国が突然日本を攻めてきたらどうするの? [268718286]
- 毎日酒飲んでるけど毎日ウコン錠剤飲んでるからセーフ
- 【石破悲報🗿】嫌儲民の九厘が「こいつええべ…」って女が発見されるwwwwwwwwwwww [151291598]
- 【朗報】巨人、阿部監督・川相昌弘・李承燁のバント三銃士を遂に揃えることに成功WWWWWWWWWW
