C++相談室 part166

1sage (ワッチョイ 8732-NXaD)
垢版 |
2025/04/26(土) 10:34:58.41ID:pbPDl6lv0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part165
https://mevius.5ch.net/test/read.cgi/tech/1698705458/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2025/05/26(月) 17:09:09.28ID:6ItBCkT+M
>>149
スポーツ新聞の見出しに釣られてるアホといっしょ
151デフォルトの名無しさん (アウアウウー Sa8f-q7Ty)
垢版 |
2025/05/26(月) 17:20:18.09ID:c1JRhLC0a
NGワッチョイ便利だな
2025/05/26(月) 19:29:05.28ID:wMDgKKvh0
単に回答者にケチつけてる第三者かと思ったら質問者本人かよwww
まぁ向いてないからプログラミング辞めた方がいいな
2025/05/27(火) 02:11:26.47ID:oTufth+r0
で、
結局まとまな回答は無かったという
バカどもの落書きだけという
2025/05/27(火) 05:19:16.15ID:umWtEDVw0
>>153
>>146
155デフォルトの名無しさん (JP 0H7f-JT63)
垢版 |
2025/05/29(木) 00:33:28.11ID:gwInQzjaH
zを複素数としてz+1は数学の教科書は普通にある。ところが、C++のプログラムで
z1=z+1としようものならテンプレート関係のエラーメッセージがズラっと出てくる。
初心者は戸惑う。いい加減、complex.hに

template <class T, class U>
decltype(auto) operator + (const std::complex<T>& z, U d)
{
return std::complex< decltype(std::declval<T>() + std::declval<U>())>
(real(z) + d, imag(z));
}
みたいなものを追加してくれないか?
156デフォルトの名無しさん (JP 0H7f-JT63)
垢版 |
2025/05/29(木) 00:37:22.81ID:gwInQzjaH
これは、complex<float> z1; とcomplex<double> z2; z1+z2の演算でも同じ。
template <class T, class U>
decltype(auto) operator + (const std::complex<T>& z1, const std::complex<U>& z2)
{
 return std::complex< decltype(std::declval<T>()+std::declval<U>() )>
( z1.real()+z2.real(), z1.imag()+z2.imag() );
}
みたいなものを実装してほしい。
157デフォルトの名無しさん (ワッチョイ 0b4a-qYXw)
垢版 |
2025/05/29(木) 00:38:57.36ID:TWUjYqyj0
【悲報】兵庫県斎藤知事のデモに増山誠氏が行くと、共産党員らしき人達に取り囲まれ罵声をあびせられる [662593167]
2025/05/26(月) 10:13:20.40
https://hayabusa9.5ch.net/test/read.cgi/news/1748222000/
元総務部長が処分に異議「エロ小説公開は知事の指示に基づく外部通報!正当な業務行為だ!!」斎藤「」 [754019341]
2025/05/28(水) 17:40:55.62
https://hayabusa9.5ch.net/test/read.cgi/news/1748421655/
斎藤兵庫「私は情報漏えいを指示してないが総務部長は知事から指示されてやったので処分は軽くする」 [659060378]
2025/05/28(水) 21:57:18.08
https://hayabusa9.5ch.net/test/read.cgi/news/1748437038/
カンボジアの巨大特殊詐欺拠点で日本人20人以上を拘束wwwwwwwwwwwwwwwwwwwww [271912485]
2025/05/28(水) 22:14:24.13
https://hayabusa9.5ch.net/test/read.cgi/news/1748438064/
日本で行方不明になる子供が増加 中國人に誘拐され臓器売買されてる(画像あり) [659060378]
2025/05/28(水) 22:18:14.00
https://hayabusa9.5ch.net/test/read.cgi/news/1748438294/
【兵庫】県庁内に動揺 幹部「県職員という誇りが持てない」 斎藤元彦知事の漏えい指示可能性に 県民からは辞職を求める声も [ぐれ★]
2025/05/28(水) 20:04:46.31
https://asahi.5ch.net/test/read.cgi/newsplus/1748430286/
【斎藤知事告発問題】情報漏えい認定され懲戒処分 兵庫県元総務部長・井ノ本知明氏が処分の執行停止を申し立てる意向示す ★2 [ぐれ★]
2025/05/28(水) 20:06:37.11
https://asahi.5ch.net/test/read.cgi/newsplus/1748430397/
【兵庫】「知事・元副知事の指示に基づき正当業務を…」斎藤知事の“側近”井ノ本氏の弁明書 知事は改めて否定 [ぐれ★]
2025/05/28(水) 17:08:14.82
https://asahi.5ch.net/test/read.cgi/newsplus/1748419694/
158デフォルトの名無しさん (アウアウウー Sa8f-q7Ty)
垢版 |
2025/05/29(木) 08:13:06.72ID:u1Xhema6a
z1=z+complex<int>(1,0);

complex<float>とcomplex<double>の和は出来なくても良いと思うけど
z3=hoge_cast<complex<double>>(z1)+z2;
159デフォルトの名無しさん (ワッチョイ 0b30-qYXw)
垢版 |
2025/05/29(木) 10:31:08.39ID:Fzugd6EU0
AIチャットボットに有害な情報を出力させる手口が存在、研究者が危険性を指摘
2025-05-27 20:00
https://karapaia.com/archives/512716.html
>> イスラエルの研究チームが、主要なAIチャットボットが「脱獄(ジェイルブレイク)」と呼ばれる手口で、安全制御を回避され、違法で有害な情報を出力してしまう可能性があることを示した。
>> ChatGPTのような生成AIには、ユーザーの指示に対して有害な回答をしないよう制限が組み込まれている。しかし、今回の実験では、その制限が比較的簡単にすり抜けられることが明らかになった。
>> 研究チームは、「これまで国家機関や犯罪組織に限られていた情報が、今やノートパソコンやスマートフォンを持つ誰にでも届く可能性がある」と警鐘を鳴らしている。
中略
>> ネットワークのハッキング法や犯罪行為であっても、手順を追って教えてくれるのだ。
中略
>> この報告は『arXiv』(2025年5月15日投稿)で閲覧できる。
※電波攻撃音波攻撃詳細に方法を教えてくれる
2025/05/29(木) 10:55:19.72ID:crgrWrcc0
>>155
C++で型を理解することは必須だし型を理解していたら特には難しくはない
エラーは分かりやすくあるべきだとは思うけども
2025/05/29(木) 15:34:51.30ID:KimJmnNH0
『変数名はキーワード、アンダースコア( _ )で始まる名前、アンダースコア2つ( __ )
を含む名前以外は自由に名付けることができる。』

って某入門書にあったんですけど、予約語は別にして、アンダースコアは衝突抑止の念のためにという事ですよね。

private:
int _size=0;
なんて変数名によくしています。
2025/05/29(木) 15:46:46.20ID:v8EevfYQM
>>161
それはやめた方がいい。理由は、
・_xxx は、ライブラリの中やマクロで使う事が有るとされている。
・__xxx は、コンパイラが内部でひそかに使って良いとされている。
2025/05/29(木) 15:47:49.43ID:v8EevfYQM
敢えて、そういう事をしたいなら、
int size_ = 0;
のように、xxx_ や xxx__ は、まあ、やっていいのかも知れない。
2025/05/29(木) 15:49:35.81ID:ozJD0VM40
アンダースコアは実装が使うから#define _sizeされても文句言えないしリンクエラーになるかもだし_Boolみたいに将来予約語になるかもしれない
…ただ世の中にはアンダースコアの付いてない普通に変数名によく使われるような単語を平気で#defineしてくるクソヘッダーも多いので気にしてもしょうがない

あとユーザー定義リテラルだけは例外で逆にアンダースコアで始めないといけない
2025/05/29(木) 15:58:31.71ID:v8EevfYQM
そういえば、マクロの dummy 変数の習慣として、
#define MMMM(_x_,_y_) (_x_と_y_を使った表現)
のように、_x_ や _y_ のように、前後に _ を付けた名前を使う
というものがある、と聞いたことが有る。
2025/05/29(木) 16:26:19.54ID:G9KWFEhx0
>>161
C++標準で予約されているから使ってはダメ。

https://learn.microsoft.com/ja-jp/cpp/cpp/keywords-cpp
2025/05/29(木) 16:30:44.26ID:KimJmnNH0
どもです。勉強になります。
んじゃこれからは
private:
int data_=0; の感じで書くことにします。うん メンバ変数は他とは違うんだぞと思わせたくて。

ちなみに
private:
int data_(0);
って書くとエラーになるのね。NSDMIの仕様でしたけ?
2025/05/29(木) 16:48:24.08ID:ozJD0VM40
メンバ変数だけじゃなくメンバ関数も区別したくない?ってなるのでthis->を省略すると警告が出るスイッチこそ欲すい
2025/05/29(木) 16:52:24.76ID:SDgOXepR0
単にアンダースコアで始まる名前というだけなら「グローバル名前空間で」処理系のために予約されているだけなのでグローバル名前空間以外で使う分には問題ない。
アンダースコアふたつが連続で含まれるか、アンダースコアで始まって大文字が続く名前はあらゆる用途で予約されてるので一般ユーザが定義 (宣言) してはいけない。
https://timsong-cpp.github.io/cppwp/n3337/global.names

>>161
> 予約語は別にして

予約語という言葉をコンパイラ一般の用語として使っている資料は多いんだけど C++ の仕様としては予約語という言葉は使ってない。
いや、ちょっと使ってるんだけどはっきりした定義なく脚注で一度出てくるだけなので正式な用語じゃないと思う。
https://timsong-cpp.github.io/cppwp/n3337/lex.digraph#footnote-16

コンパイラが直接的に認識して文法上の特別な地位にあるような名前として「キーワード」があり、
それとは別にライブラリの構成上の規約として「予約名」がある。
2025/05/29(木) 17:07:12.49ID:KimJmnNH0
>>169
> 単にアンダースコアで始まる名前というだけなら「グローバル名前空間で」処理系のために予約されているだけなのでグローバル名前空間以外で使う分には問題ない。
> アンダースコアふたつが連続で含まれるか、アンダースコアで始まって大文字が続く名前はあらゆる用途で予約されてるので一般ユーザが定義 (宣言) してはいけない。
ども了解です。基本外部で宣言する事はしないです。てかもうないですもんね。
2025/05/29(木) 20:50:35.18ID:lOyNyril0
キーワード以外にもmainとかdefinedとか__file__とか__VA_ARGS__とか規格で特殊な意味を与えられてる文字列は色々あるけど
その総称ってないんだよな
2025/05/29(木) 23:49:20.86ID:hr2gWeV00
C#やPythonのように、クラスのフィールドをアンダースコアで始めるのが一般的という言語もあるから、そちらから来るとそうしてしまうのかも?
C++は統一的な指針はないけれど、GoogleのC++スタイルガイドでは value_ のように末尾にアンダースコアを付けるとしてるので、これで良いと思う
昔ながらのプロジェクトだと member の意味で m_value のようにするというのがあるけど、これはだいぶレガシー
2025/05/30(金) 01:16:49.62ID:Jzn0K6cGa
ハンガリアン記法などというワードも、もはや若人には通じない時代となってしまったのだ・・・
2025/05/30(金) 01:39:44.98ID:QwZ+U2hj0
個人で書くときはハンガリアン(もどき)だしm_付けてるけどな
サフィックスよりはプレフィックス付ける方がサジェストとか検索で絞りやすい
古いだのなんだのじゃなくて合理的ならなんでもいいと思うんだけどな
2025/05/30(金) 02:42:40.16ID:qIE+EPsq0
m_も馬鹿っぽいけどな
176デフォルトの名無しさん (ワッチョイ 9fda-sPKC)
垢版 |
2025/05/30(金) 03:11:51.77ID:DT1BzE420
FORTRAN方式こそ正義
2025/05/30(金) 03:32:04.17ID:a8PtKm050
前も似たようなこと言ったけど、馬鹿っぽいとか古いとか、ユーザーには何の利益にもならんぞ
178デフォルトの名無しさん (ワッチョイ 0b59-+7qT)
垢版 |
2025/05/30(金) 10:36:11.75ID:9fSC83d40
最近のIDEは色がついていてローカル変数とメンバー変数が区別できるようになってるね
m_ などのプリフィックスは不要になってきてると思う
2025/05/30(金) 10:50:34.95ID:XWQpoVmBa
m_ とか g_ は恥ずかしいね
2025/05/30(金) 11:00:52.20ID:ORX18+JcM
>>179
そんなことない。
181デフォルトの名無しさん (ワッチョイ 9f52-WoVj)
垢版 |
2025/05/30(金) 12:05:13.31ID:qi/53/kN0
一目でメンバ変数かを判断できるようにするべきだ
2025/05/30(金) 12:09:34.75ID:MmHFotTIM
>>172
>C++は統一的な指針はないけれど、GoogleのC++スタイルガイドでは value_ のように末尾にアンダースコアを付けるとしてるので、これで良いと思う
でも、local auto 変数、local static 変数、メンバ変数と、(完全な)グローバル変数
global static 変数の少なくとも 5 種類あるので、
m_xxx, g_xxx, s_xxx の記法だと、区別しやすいが、
xxx_ だと難しい。
2025/05/30(金) 12:55:15.24ID:ST0oYfQR0
グローバル変数は爆弾だから特別な名前を付けるべき
データメンバーとローカル変数は(クラス内では)混ぜて多用されるから区別付けておくべき

それ以外は好みでいいよ
184デフォルトの名無しさん (アウアウウー Sa8f-q7Ty)
垢版 |
2025/05/30(金) 13:22:08.94ID:XWQpoVmBa
>>168
判る
185デフォルトの名無しさん (ワッチョイ 8bbd-qYXw)
垢版 |
2025/05/30(金) 13:22:41.29ID:FTEPrInt0
悪用されるのは当然です
高品質かつ高速な画像生成AI「FLUX.1 Kontext」が登場したので使ってみた、テキストと画像の入力に対応しアニメ風も実写風も生成可能
https://gigazine.net/news/20250530-flux-1-kontext-image-generation-ai/

全てのAIの推論をどうやって導き出したかがわかるのでプログラムの改造がはかどる
AnthropicがAIモデルの思考内容を可視化できるオープンソースツール「circuit-tracer」を公開
https://gigazine.net/news/20250530-anthropic-open-source-circuit-tracing/
2025/05/30(金) 13:23:32.32ID:XWQpoVmBa
const は c_xxx ですね判ります
2025/05/30(金) 15:34:37.29ID:uDWPTWtO0
m_ とか s_とかg_つける習慣はやめられないな
スコープ明示は読みやすい
この程度をIDEに依存したくないわ
2025/05/30(金) 15:35:56.97ID:uDWPTWtO0
あと初見でautoだらけとかチェーンしまくるコードも読みにくくてしゃあない
書いた本人は無駄なくせて満足だろうけど、ある程度の冗長性は許容したほうが読みやすいし事故を防げる場合もあるんだよな
189デフォルトの名無しさん (ワッチョイ 2b01-+rG7)
垢版 |
2025/05/30(金) 15:42:21.31ID:418TV5iU0
>>188
無駄をなくすのが目的じゃなくて
情報の重複を避けてるんじゃないかな?
2025/05/30(金) 16:01:45.27ID:uDWPTWtO0
ちなみにautoでしか書けないやつとかあるのはわかってるよ
2025/05/31(土) 02:34:30.00ID:s94c4VR80
イテレータの型なんかはauto使わず律儀に書く方が間違ってる
2025/06/02(月) 09:16:11.21ID:aX5lnsqr0
Stroustrup は名前に型やスコープなどの情報を埋め込むのは否定的だ。
https://www.stroustrup.com/bs_faq2.html#Hungarian
部分的に便利な場合があることは認めていて、型名を大文字で始める (アッパーキャメルケース) こととマクロは全て大文字にすることを紹介してる。
193デフォルトの名無しさん (アウアウウー Sac5-Uswy)
垢版 |
2025/06/02(月) 14:50:23.57ID:DSKTrfoza
リファクタリングの途中でルールにずれるたびに名前変えてると効率悪過ぎですし
2025/06/02(月) 15:57:32.89ID:aX5lnsqr0
出自が違うライブラリを組み合わせて使うのもよくあることだし、一貫した規約を保つのは難しいな。

D&E の 9.4.4 ではツールがより賢くなった理想的な開発環境について触れている。
プログラミング言語がテキスト表現を持つのはプログラマに対するインターフェイスに過ぎず、プログラムがテキストである必要はないという論だ。
ツール内部では抽象的なデータ構造として持っておいて必要に応じて (各プログラマの好みに合わせて) テキスト表現を調整するような仕組みにすれば名付けのスタイルなんかどうでもよくなる。
195デフォルトの名無しさん (JP 0H16-tLkV)
垢版 |
2025/06/02(月) 16:43:02.90ID:wUlZIBZbH
あのー、話をぶったぎってすみません。

>>155の関数の戻り値は
decltype(auto) じゃなくて 単純にautoでいいです
よね?
RVOを使っているから値返しで良いし、参照返しも
okなdecltype(auto)は過剰スペックなような。
196デフォルトの名無しさん (ワッチョイ 5154-DcV8)
垢版 |
2025/06/02(月) 16:52:31.25ID:Ca4PuVUf0
シャープ、PythonによるAIデバイス向け高位合成ツールをオープンソースで公開
https://news.mynavi.jp/techplus/article/20250602-3343055/

博報堂メディカル、生成AIを用いた審査業務効率化ソリューションを開発 [
https://news.mynavi.jp/techplus/article/20250602-3342950/

「AIをより魅力的にする戦略」がAIチャットボットに「薬物使用を促す」といった有害な考えを強化させる可能性があると研究で判明
https://gigazine.net/news/20250602-ai-chatbots-user-influence-attention/
2025/06/02(月) 20:55:46.15ID:ET4i7BARM
>>192
>Stroustrup は名前に型やスコープなどの情報を埋め込むのは否定的だ。
彼の「机上の空論気質」がそこにも現れている。
2025/06/02(月) 22:27:52.64ID:ET4i7BARM
昔、BASIC言語で、数値(単精度浮動小数点)はAの様に、文字列は A$ の様に
書くのは分かりやすかったな。
今も、数値はx,y,a,bやi,j、文字列変数は、strText と書いた方が分かりやすく感じる。
199デフォルトの名無しさん (JP 0H16-tLkV)
垢版 |
2025/06/02(月) 23:11:50.34ID:wUlZIBZbH
>>195 = >>155 です。
2025/06/03(火) 01:42:24.38ID:ue5SdiDx0
型を変数名に含めるのは型を大量に作るのが当たり前になった今では速攻破綻する。文字列だけでも何種類あるよ
スコープはC++では有限だからまあよしというか、マクロという凶悪大スコープなやつだけは隔離しないとやってられない
2025/06/03(火) 03:15:04.87ID:QDwFpnnH0
>>192
最後に「細かいことにこだわるよりも、一貫してルールが守られていることの方が重要」と結んでるのを皆ガン無視してるな
2025/06/03(火) 03:19:00.18ID:0VgbeSrB0
>>201
それは言うまでもなく前提の話だと思うわ
今はその前提の話の先の話をしてるんだろうと俺は大人しく見てる
2025/06/03(火) 05:25:56.96ID:ZBtI7lM80
cの範疇になるけどsignedとunsignedが変数名でわかるのは助かるけどな
コンパイラのwarning任せは心もとない
204デフォルトの名無しさん (ワッチョイ 0d21-bekj)
垢版 |
2025/06/03(火) 06:02:38.05ID:h7iZDaPS0
変数は日本語で
2025/06/03(火) 09:23:02.69ID:y5vobhTd0
最初から言語で縛ってればこの議論すら発生してない
2025/06/03(火) 10:34:45.25ID:h0O9iP1b0
MINDでしたけ?
2025/06/03(火) 11:33:27.00ID:P/OxecZX0
>>203
数値については変数の型そのものよりも演算のときに暗黙に型変換されることがあるのが C++ で問題になりやすいところだと思う。
2025/06/03(火) 14:29:05.51ID:tpA/FWUpM
>>200
>文字列だけでも何種類あるよ
だからこそ、統一的に接頭辞で区別すると便利だ。
209デフォルトの名無しさん (ワッチョイ 052f-MN+B)
垢版 |
2025/06/03(火) 14:51:27.14ID:7K3A6UIY0
XXXsよりXXXList (またはXXXVector)だ!
210デフォルトの名無しさん (ワッチョイ 0db3-bekj)
垢版 |
2025/06/03(火) 16:18:33.92ID:h7iZDaPS0
DNAはどうなってんだろうな
4進数の羅列だけで、変数持ってないし
直接アドレス指定どうやってんだよ?
peek pokeは誰が担ってんだよ
2025/06/03(火) 20:04:19.87ID:/7yVoUF50
>>210
タンパク質の合成とか調べなされ。mRNAとかtRNAとか。
212デフォルトの名無しさん (スッップ Sda2-dO7W)
垢版 |
2025/06/03(火) 20:22:12.60ID:ETf4Zm6Cd
>>155
虚数は実在しない
2025/06/03(火) 21:01:25.55ID:/jgzz5v70
>>212
「虚数」みたいなラベルに騙されている。

「数字2つのタプルで、四則演算の定義されたもの」で、虚数みたいな演算を持つものと考えればいい。
2025/06/03(火) 21:15:47.28ID:ZBtI7lM80
>>212
数学を誤解してるやつの典型だな
存在するとかしねーじゃないっての
2025/06/03(火) 21:28:00.78ID:h0O9iP1b0
3次方程式の解の方程式に虚数が出てくる意味ですよ。しったか
216デフォルトの名無しさん (アウアウウー Sac5-ucTA)
垢版 |
2025/06/03(火) 21:43:38.26ID:ZVCnTieoa
そんなこと言ったら0も-1もねーよ
2025/06/03(火) 21:53:33.79ID:bcTkTLKWa
>>213
だから複素数がベクトルとして機能するんだよね
218デフォルトの名無しさん (アウアウウー Sac5-Uswy)
垢版 |
2025/06/03(火) 22:37:53.10ID:SMbzrRmIa
>>210
crisper-cas-9
2025/06/04(水) 04:46:09.37ID:GWnctGWc0
質問なのですが
double qax(int a, long b) { ... }
double quux(int a, long b) { ... }
std::function<double(int, long)> gfred= qax;
としたときに、gfred が qax と同じだが quux とは違う、というのを判定するにはど
うしたら良いの?
2025/06/04(水) 05:46:56.09ID:EsSRpHcz0
>>217
正確には、+と*の演算による複素数同士の関係(構造)が複素数の本質。
「虚」とか、本質とは関係のない単なるバズワード。
2025/06/04(水) 09:29:46.05ID:XvRleYyH0
>>219
元の型で取り出すためのメンバ関数テンプレートとして target が使える。
↓こういうことがしたいのかな?
https://wandbox.org/permlink/MpTFLrezqJE06Myb
2025/06/04(水) 09:58:31.17ID:pOYKhOcIa
>>219
https://ideone.com/70WOig
223デフォルトの名無しさん (ワッチョイ f191-DcV8)
垢版 |
2025/06/04(水) 20:04:15.01ID:Ao4InlGx0
GoogleのGemini 2.5で日本語を含む多言語の音声生成が可能に
https:
//gigazine.net/news/20250604-google-gemini-native-audio/

無料で超絶リアルな3DCGキャラを作成&動かせるゲーム開発ツール「MetaHuman」の一部がUnreal Engine 5.6に統合
https:
//gigazine.net/news/20250604-unreal-engine-5-6-metahuman/

ついにAndroid版Photoshopのベータ版が登場、無料でAIによる画像生成やレイヤー編集を利用可能
https:
//gigazine.net/news/20250604-adobe-photoshop-android/

あなたは「生成AI製フェイク画像」を見抜けますか?--判別は"ほぼ無理”な時代、来歴証明が重要なワケ
https:
//japan.cnet.com/article/35233768/

ChatGPT無料版でも「会話履歴を踏まえた回答」が可能に、ただし最近の会話のみ
https:
//japan.cnet.com/article/35233795/

xAI「Grok」18禁モード無料開放 けしからん会話可能に 日本語OK
https:
//ascii.jp/ai/
2025/06/04(水) 23:13:17.20ID:GWnctGWc0
>>221
なるほど……

>>222
なるほど……

しかしstd::function<T>::target()で関数オブジェクトも扱えるらしいとわかったのでやってみたら
こちらは意図通り動かず釈然とせんぬ……
https://ideone.com/VM9Vh0

24行目〜26行目のif文の動きが思ってたのと違う……

一体どうすれば……orz
2025/06/04(水) 23:18:49.86ID:GWnctGWc0
24行目〜26行目のif文の動きが思ってたのと違う……
2025/06/04(水) 23:27:49.48ID:GWnctGWc0
とりま↓こうしたら逝けた……
https://ideone.com/sug3S4

んまーfooのインスタンスの寿命を考えたらstd::function<T>はfooをコピーする実装になるという予想の下に、
fooを構築したときのthisをメンバm_objIDに記憶させて、fooの等値演算はm_objIDの比較で行うようにしたらイゴイタ……

5chは漏れの日記帳……
2025/06/05(木) 03:33:47.67ID:lIQfbdfd0
>>226
この場合に呼び出されるコンストラクタは
template<class F> function(F f);
なのでコピーされることはこのシグネチャから自明。
https://timsong-cpp.github.io/cppwp/n3337/func.wrap.func.con

std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。
どういう状況で比較しようとしてるのかわらんけど、そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
2025/06/05(木) 08:27:57.44ID:ExyrcTL10
>>227
レスdクス、

>コピーされることはこのシグネチャから自明。
なるほど……

>std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。
それはそう

>そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
これはスレッドの終了時にコールバック関数を呼ぶ仕組みにおいて、
コールバック関数とコールバックを待機する関数の組み合わせが本当に正しいか待機関数側でチェックするのに使い鯛、
(コールバック関数は自由に登録できるようにする必要があり、
 コールバックされたとき単に処理を進めるだけで待機の解除をなんら行わないコールバック関数とかもあるので
 対応を間違ったらバグ
2025/06/05(木) 08:28:31.27ID:ExyrcTL10
コールバック関数の自由な登録というのをstd::function<T>として登録することを考えて居たけんども
素のstd::function<T>ではチェックが自由にできないということがわかりた……
MSVCとかで関数を入れたstd::function<double (int, long)>に対し関数オブジェクトfooとしてtarget<foo>()するか
反対のことをしたらcatchできない例外が発生すた、(多分構造化例外か何かでSTLの仕様的にはおそらく未定義動作
故に素のstd::function<T>を使おうとする限り、入れるブツをdynamic_cast可能な関数オブジェクトに限定するとかしないと
手の打ちようが無いorz
現実解はstd::function<T>をwrapした「コールバック関数クラス」の創設……
2025/06/05(木) 11:16:19.85ID:8BEUFbRj0
別に質問すんのも気付いた事を書くのも(手短になら)いいんだけどさ

>5chは漏れの日記帳……
ええ加減にせえよお前マジで
開き直ってんじゃねえぞ
2025/06/05(木) 12:10:53.33ID:BNqgyRrD0
>>229
target で指定した型と実際に入っている動的な型が合致しない場合はヌルポインタが返される仕様になっていてそれ自体は問題ない。
実際のコードがどうなってるか示されていないけれど、 >>226 の延長線のようなコードだとしたらヌルポインタ返ってきたときヌルポインタに単項 * を適用していることになるし、更にはそのメンバ関数である operator== を呼び出したりデータメンバ m_objID にアクセスしたりしてるのが全部ダメ。
2025/06/05(木) 13:25:12.77ID:EjJmkkft0
>>229
あんまり深く理解してないけど

コールバックの責任範囲(待機の解除とか)が違うのを明確に管理したい
->責任範囲の違いごとに基底クラスを用意して、コールバックは派生クラスで実装させる。

みたいなガチガチの管理がいいんじゃないんかね。
コールバック実装側にも管理する義務を押し付けられるし、基本的なフレームワーク(待機の解除手順とか)は基底クラス側で実装できる。
2025/06/05(木) 16:59:25.81ID:I5agSXi50
単純なんですが、わからんので教えてください。
#include <iostream>
int main(){
std::cout <<"hello"s<<std::endl;
}
がエラーになります。なんか勘違いしてます?sは無理につけないほうがいいのかな?!
$ g++ -Wall -Wextra -std=c++23 -O2 -DGNU_SOURCE main.cpp -o main
g++は11.4.0
2025/06/05(木) 17:33:40.39ID:Ze0QqwpuM
>>233
#include <string>
using namespace std::string_literals;
2025/06/05(木) 17:37:36.07ID:BNqgyRrD0
>>233
結論から言うとこういう感じ。

#include <iostream>
#include <string>

int main(){
using namespace std::literals::string_literals;
std::cout <<"hello"s<<std::endl;
}

s はヘッダ string の中の std::literals::string_literals という名前空間で定義されているからこういう形で using してからじゃないと使えない。
この単純なケースだけを見れば s を付ける利点は何もないけど状況次第。
2025/06/05(木) 17:38:38.46ID:I5agSXi50
>>234
早速の返信ありがとうございました。勉強します。mOm
2025/06/05(木) 17:40:53.81ID:I5agSXi50
>>235
御意 mOm 色々あるのですね・・・
2025/06/05(木) 18:41:08.81ID:BNqgyRrD0
他のいくつかの言語 (Java とか C# とか) の感覚で C++ を見ると普通の文字列リテラルの型が std::string ではなく char[] なのは引っかかりがちなところかもしれない。
常に s を付けるとそういう引っかかりを無くせるので不必要でも一貫して s を付けるような運用は悪くはないのかもしれない。
基本的にはちゃんと理解して使い分けて欲しいけどね。
2025/06/07(土) 01:59:21.81ID:8e7E0Zg00
emplace_backなんて便利なものあったのかよ
なんで教えてくれなかったの
2025/06/07(土) 02:24:44.55ID:jKOd5e+0a
最初にちゃんと教えたじゃない
2025/06/07(土) 04:07:51.58ID:tL+z2F5g0
便利ってのはちょっと違うだろ
2025/06/07(土) 08:30:18.62ID:6XhFO67c0
う 知らなかった。rvalue Refでの実装ですよね。30%以上速くなってるみたいな。
243デフォルトの名無しさん (ワッチョイ c97c-lQrw)
垢版 |
2025/06/11(水) 00:24:35.36ID:PujA5y+40
プログラミングなんて勉強して意味あるのかな…?
AIに全部もってかれそうなのに…
2025/06/11(水) 00:26:46.70ID:BmOhOZog0
面白いからやってるだけでは?
2025/06/11(水) 00:42:35.30ID:LotBJsEG0
>>243
プログラミング言語に限らず自然言語も
言語の位置づけが変わったことを踏まえた
勉強が必要になったと思う
2025/06/11(水) 01:19:10.27ID:oPVwdzBR0
こういうのは勉強したくない言い訳だから意味を答えても無駄だって聞いた
2025/06/11(水) 05:22:56.57ID:X5AhUIPs0
頭使ってPG組むのは自分のためなんよ
なんでもAIに頼ってたら馬鹿まっしぐらで緊急時になにもできない人間に成り下がってしまうんだぜ
2025/06/11(水) 06:27:29.37ID:LS0N9soX0
>>243
お前実際にAIでプログラミングしてないだろ?
実際やってみたらそんな感想にはならない
2025/06/11(水) 07:39:00.61ID:1mMnjHQa0
AIがいいプログラミング出来るように開発しなきゃならないね。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況