C++相談室 part166 (768レス)
1-

179
(1): (アウアウウー Sa8f-q7Ty) 05/30(金)10:50 ID:XWQpoVmBa(1/3) AAS
m_ とか g_ は恥ずかしいね
180: (オイコラミネオ MM8f-rxm+) 05/30(金)11:00 ID:ORX18+JcM(1) AAS
>>179
そんなことない。
181: (ワッチョイ 9f52-WoVj) 05/30(金)12:05 ID:qi/53/kN0(1) AAS
一目でメンバ変数かを判断できるようにするべきだ
182: (オイコラミネオ MM8f-rxm+) 05/30(金)12:09 ID:MmHFotTIM(1) AAS
>>172
>C++は統一的な指針はないけれど、GoogleのC++スタイルガイドでは value_ のように末尾にアンダースコアを付けるとしてるので、これで良いと思う
でも、local auto 変数、local static 変数、メンバ変数と、(完全な)グローバル変数
global static 変数の少なくとも 5 種類あるので、
m_xxx, g_xxx, s_xxx の記法だと、区別しやすいが、
xxx_ だと難しい。
183: (ワッチョイ 9f06-XbnY) 05/30(金)12:55 ID:ST0oYfQR0(1) AAS
グローバル変数は爆弾だから特別な名前を付けるべき
データメンバーとローカル変数は(クラス内では)混ぜて多用されるから区別付けておくべき

それ以外は好みでいいよ
184: (アウアウウー Sa8f-q7Ty) 05/30(金)13:22 ID:XWQpoVmBa(2/3) AAS
>>168
判る
185: (ワッチョイ 8bbd-qYXw) 05/30(金)13:22 ID:FTEPrInt0(1) AAS
悪用されるのは当然です
高品質かつ高速な画像生成AI「FLUX.1 Kontext」が登場したので使ってみた、テキストと画像の入力に対応しアニメ風も実写風も生成可能
外部リンク:gigazine.net

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

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

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

博報堂メディカル、生成AIを用いた審査業務効率化ソリューションを開発 [
外部リンク:news.mynavi.jp

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

「数字2つのタプルで、四則演算の定義されたもの」で、虚数みたいな演算を持つものと考えればいい。
214: (ワッチョイ c60d-+XEO) 06/03(火)21:15 ID:ZBtI7lM80(2/2) AAS
>>212
数学を誤解してるやつの典型だな
存在するとかしねーじゃないっての
215: (ワッチョイ 69d6-a+Ou) 06/03(火)21:28 ID:h0O9iP1b0(2/2) AAS
3次方程式の解の方程式に虚数が出てくる意味ですよ。しったか
216: (アウアウウー Sac5-ucTA) 06/03(火)21:43 ID:ZVCnTieoa(1) AAS
そんなこと言ったら0も-1もねーよ
217
(1): (アウアウウー Sac5-37JY) 06/03(火)21:53 ID:bcTkTLKWa(1) AAS
>>213
だから複素数がベクトルとして機能するんだよね
218: (アウアウウー Sac5-Uswy) 06/03(火)22:37 ID:SMbzrRmIa(1) AAS
>>210
crisper-cas-9
219
(2): (ワッチョイ eea1-bAVr) 06/04(水)04:46 ID:GWnctGWc0(1/4) AAS
質問なのですが
double qax(int a, long b) { ... }
double quux(int a, long b) { ... }
std::function<double(int, long)> gfred= qax;
としたときに、gfred が qax と同じだが quux とは違う、というのを判定するにはど
うしたら良いの?
220: (ワッチョイ 656e-hbVI) 06/04(水)05:46 ID:EsSRpHcz0(1) AAS
>>217
正確には、+と*の演算による複素数同士の関係(構造)が複素数の本質。
「虚」とか、本質とは関係のない単なるバズワード。
221
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 8d32-2Myj) 06/04(水)09:29 ID:XvRleYyH0(1) AAS
>>219
元の型で取り出すためのメンバ関数テンプレートとして target が使える。
↓こういうことがしたいのかな?
外部リンク:wandbox.org
222
(1): (アウアウウー Sac5-Uswy) 06/04(水)09:58 ID:pOYKhOcIa(1) AAS
>>219
外部リンク:ideone.com
223: (ワッチョイ f191-DcV8) 06/04(水)20:04 ID:Ao4InlGx0(1) AAS
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による画像生成やレイヤー編集を利用可能
省11
224: (ワッチョイ eea1-bAVr) 06/04(水)23:13 ID:GWnctGWc0(2/4) AAS
>>221
なるほど……

>>222
なるほど……

しかしstd::function<T>::target()で関数オブジェクトも扱えるらしいとわかったのでやってみたら
こちらは意図通り動かず釈然とせんぬ……
外部リンク:ideone.com
省2
225: (ワッチョイ eea1-bAVr) 06/04(水)23:18 ID:GWnctGWc0(3/4) AAS
24行目〜26行目のif文の動きが思ってたのと違う……
226
(2): (ワッチョイ eea1-bAVr) 06/04(水)23:27 ID:GWnctGWc0(4/4) AAS
とりま↓こうしたら逝けた……
外部リンク:ideone.com

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

5chは漏れの日記帳……
227
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 29f7-FMYs) 06/05(木)03:33 ID:lIQfbdfd0(1) AAS
>>226
この場合に呼び出されるコンストラクタは
template<class F> function(F f);
なのでコピーされることはこのシグネチャから自明。
外部リンク[con]:timsong-cpp.github.io

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

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

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

>そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
省5
229
(2): (ワッチョイ eea1-bAVr) 06/05(木)08:28 ID:ExyrcTL10(2/2) AAS
コールバック関数の自由な登録というのを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した「コールバック関数クラス」の創設……
230: (ワッチョイ 0505-XVxU) 06/05(木)11:16 ID:8BEUFbRj0(1) AAS
別に質問すんのも気付いた事を書くのも(手短になら)いいんだけどさ

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

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

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

#include <iostream>
#include <string>

int main(){
using namespace std::literals::string_literals;
std::cout <<"hello"s<<std::endl;
省3
236: (ワッチョイ 69d6-a+Ou) 06/05(木)17:38 ID:I5agSXi50(2/3) AAS
>>234
早速の返信ありがとうございました。勉強します。mOm
237: (ワッチョイ 69d6-a+Ou) 06/05(木)17:40 ID:I5agSXi50(3/3) AAS
>>235
御意 mOm 色々あるのですね・・・
238: はちみつ餃子◆8X2XSCHEME (ワッチョイ 8d32-2Myj) 06/05(木)18:41 ID:BNqgyRrD0(3/3) AAS
他のいくつかの言語 (Java とか C# とか) の感覚で C++ を見ると普通の文字列リテラルの型が std::string ではなく char[] なのは引っかかりがちなところかもしれない。
常に s を付けるとそういう引っかかりを無くせるので不必要でも一貫して s を付けるような運用は悪くはないのかもしれない。
基本的にはちゃんと理解して使い分けて欲しいけどね。
239: (ワッチョイ 021f-8ND1) 06/07(土)01:59 ID:8e7E0Zg00(1) AAS
emplace_backなんて便利なものあったのかよ
なんで教えてくれなかったの
240: (アウアウウー Sac5-JYt+) 06/07(土)02:24 ID:jKOd5e+0a(1) AAS
最初にちゃんと教えたじゃない
241: (ワッチョイ c67e-+XEO) 06/07(土)04:07 ID:tL+z2F5g0(1) AAS
便利ってのはちょっと違うだろ
242: (ワッチョイ 69d6-a+Ou) 06/07(土)08:30 ID:6XhFO67c0(1) AAS
う 知らなかった。rvalue Refでの実装ですよね。30%以上速くなってるみたいな。
243
(3): (ワッチョイ c97c-lQrw) 06/11(水)00:24 ID:PujA5y+40(1) AAS
プログラミングなんて勉強して意味あるのかな…?
AIに全部もってかれそうなのに…
244: (ワッチョイ 2b5b-HFYW) 06/11(水)00:26 ID:BmOhOZog0(1) AAS
面白いからやってるだけでは?
245: (ワッチョイ c901-dA2F) 06/11(水)00:42 ID:LotBJsEG0(1/2) AAS
>>243
プログラミング言語に限らず自然言語も
言語の位置づけが変わったことを踏まえた
勉強が必要になったと思う
246: (ワッチョイ 53d6-DqH0) 06/11(水)01:19 ID:oPVwdzBR0(1) AAS
こういうのは勉強したくない言い訳だから意味を答えても無駄だって聞いた
247: (ワッチョイ 91f0-gi55) 06/11(水)05:22 ID:X5AhUIPs0(1) AAS
頭使ってPG組むのは自分のためなんよ
なんでもAIに頼ってたら馬鹿まっしぐらで緊急時になにもできない人間に成り下がってしまうんだぜ
248: (ワッチョイ 7bf9-2FFP) 06/11(水)06:27 ID:LS0N9soX0(1/3) AAS
>>243
お前実際にAIでプログラミングしてないだろ?
実際やってみたらそんな感想にはならない
249: (ワッチョイ a9d6-gi55) 06/11(水)07:39 ID:1mMnjHQa0(1) AAS
AIがいいプログラミング出来るように開発しなきゃならないね。
250
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ d132-5Qoi) 06/11(水)09:03 ID:AWy+SoY40(1/3) AAS
>>243
上司の指示が支離滅裂だったらプログラミングできるか?
AI にとってのお前は指示を出す上司だ。
251
(1): (ワッチョイ 39a6-EOGS) 06/11(水)09:22 ID:IDIyuYFJ0(1) AAS
AIプログラミングってストレス溜まるらしいね
AIの作成したコードに誤りがないかを人間が確認して誤りがあれば修正を指示する
人間がコードを読んでバグを見つけないといけないケースもある
まるで出来の悪い部下を教育しているようでかなりの根気が必要

自分でコード書くほうがストレスフリーで楽だよ
252: (ワッチョイ c18f-ur14) 06/11(水)10:00 ID:7/IL82s+0(1) AAS
新人よりはずっといいコード作るのと、速度が自分と比べても圧倒的ゆえに、プロトタイプ作るのはもう任せてしまってる
まだ全部任せるのは無理だけど、5年前に今の状況伝えても笑って信じない程度には有能
253: (ワッチョイ 2bd9-c7N1) 06/11(水)10:37 ID:4plX/rhp0(1) AAS
>>250
適宜質問して言質取ればいいんだけどな
上司が無能でもなんとか出来るのが人間
254: はちみつ餃子◆8X2XSCHEME (ワッチョイ d132-XeLS) 06/11(水)10:58 ID:AWy+SoY40(2/3) AAS
AI が思ったより高性能なのは確かだが、これからの性能の伸びは急激に鈍化する可能性が高い。
性能の高い AI には単純に巨大な計算能力と記憶が必要で、更にはそれを支える電力が要るという物理的限界があるから。
量子コンピューターなど、物理のほうでなんらかのブレイクスルーがあれば更なる飛躍が望めるかもしれないけれど……
しばらくは今程度の AI との付き合い方を社会のほうが学習して折り合いをつけていく形になると思う。
255: (ワッチョイ 5901-c7N1) 06/11(水)11:15 ID:HZCA0d+40(1) AAS
知らん事に対してあまり分かったような事言わない方がいいぞ
256: (ワッチョイ 5387-jI5/) 06/11(水)11:39 ID:sSZ9OAEc0(1) AAS
246で終わってて以降はいつもの蛇足
257: (ワッチョイ 13bb-LbEI) 06/11(水)12:34 ID:5IFZnh9v0(1) AAS
>>251
テストケースをちゃんと作ってればAI任せでもかなりできる
258: (ワッチョイ 7bf9-2FFP) 06/11(水)13:08 ID:LS0N9soX0(2/3) AAS
現状AIにお任せで作るテストケースなんて低品質のザル
それに何をやらせるにしろコンテキストサイズ小さすぎで少し規模でかくなったらすぐ鳥頭状態で延々間違い続ける
まだまだ技術は進歩するだろうがエンジニア不要なんて当分ならない
仕事のやり方が変わるだけ
259
(1): (ワッチョイ d1c4-1q1N) 06/11(水)13:48 ID:F2et1oFa0(1) AAS
何万回も試行させてバグ発見とバグ取りまでAI任せでいいじゃん
それを人がやってるのはアホすぎるw

道具使えてない
1-
あと 509 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s