C++相談室 part166

2025/05/07(水) 23:14:51.64ID:OFqp/W1O0
>>36
まあ、普通の配列なら、
int my_data[3]= { 6, 8, 44 };
ってできるので。

できても問題は無さそうだけど…
2025/05/07(水) 23:25:35.43ID:jrPMMEx+0
>>39
文法の一貫性としてということ?
配列をそう定義したときの [3] は型の一部であってコンストラクタに渡す値ではないから……。
配列をそう書けるのが例外的、変則的な措置だと考えるべきだと思う。
41デフォルトの名無しさん (JP 0Hee-L4A6)
垢版 |
2025/05/08(木) 00:57:15.98ID:4oP42WaSH
>>20
decvalは要る。お前さんは数値計算知らん。
型拡張で重要になるぞ。
42デフォルトの名無しさん (JP 0Hee-L4A6)
垢版 |
2025/05/08(木) 01:50:59.67ID:4oP42WaSH
はちみつさんはC++仕様策定委員なの?
委員会でそんな発言されたら困るよ。
今さらtraitsみたいなトリック
使いたくないよ。
2025/05/08(木) 02:01:35.71ID:aAWkv5hi0
>>41
何を言ってるんだ? >>18 で declval を使ったのが無意味だという話をしてるんだぞ。
2025/05/08(木) 03:34:36.76ID:JGiTQ1yK0
>>38
これでできましたね。
(... && is_convertible_v<U, T>)ってなんでしょうか?

(可変個引数Uが存在してって意味?)
2025/05/08(木) 08:59:22.62ID:aAWkv5hi0
>>44
それは特に裏の意味はないよ。
全ての U が T に変換可能 (convertible) であるという制約を入れてる。
46デフォルトの名無しさん (JP 0Hee-L4A6)
垢版 |
2025/05/08(木) 11:19:39.64ID:4oP42WaSH
>>43
そうでしたか。すみませんでした。
2025/05/08(木) 19:02:02.59ID:JGiTQ1yK0
>>45
そうでしたか
難しいですね…
2025/05/08(木) 20:09:36.08ID:aAWkv5hi0
>>47
難しい (分かり難い) と感じる部分を具体的に説明できる?
2025/05/09(金) 02:43:45.34ID:gpRG314Y0
templeteでフォボナっちみたいのって、
実際に何に使うのかね…?

template<int n>
struct fibonacci
{
static constexpr int value = fibonacci<n-1>::value + fibonacci<n-2>::value;
};
50デフォルトの名無しさん (ワッチョイ af58-Enlg)
垢版 |
2025/05/09(金) 07:07:00.89ID:+l+evNW70
もう見抜けない、最先端のAIディープフェイク動画は心臓の鼓動まで再現、判別が困難に
2025-05-08
https://karapaia.com/archives/507859.html
2025/05/09(金) 09:22:27.26ID:NaCqAF6G0
>>49
暗号関係などで用途はあると思うけど今なら関数 (costexpr) で定義したほうがいいな。
2025/05/09(金) 11:24:03.52ID:3QJ66PDO0
>>49
定数の計算を全部コンパイル時にやっちまおうぜというのが流行った時期があった
それでtemplateの目的外使用が過ぎたためにconstexprができた
2025/05/09(金) 15:56:00.48ID:z5xnEJE80
ボレロさんが生きてた頃に比べるとつまんなくなったなconstexprさん
2025/05/09(金) 16:41:56.66ID:gpRG314Y0
>>51
はちみつ餃子さんは何系のプログラマーでしょうか?

組み込み系?
2025/05/09(金) 16:43:37.53ID:gpRG314Y0
>>52
ところで、
なんでコンパイラ側で、constを自動でconstexpに最適化しないんですかね…?
2025/05/09(金) 16:47:27.64ID:U8gSLCWq0
constexpr に特有のトリックは constexpr の制限故に生まれたのだから緩和されれば気合いの入った取り組みも要らんようになる。
真っ当な進歩なので文句は言えんがつまらんというのはわかる。
2025/05/09(金) 16:53:00.47ID:U8gSLCWq0
>>55
する。
const をつけて定義する変数の初期化子が定数式であるときその変数も定数になるというルールがある。
つまり初期化子が定数式なら const 変数と constexpr 変数は同一の効果をもつ。
2025/05/09(金) 20:05:51.01ID:gpRG314Y0
>>57
そうでしたか
まあ、そうですよね…
2025/05/09(金) 20:07:04.42ID:gpRG314Y0
>>53
陶芸家プログラマーか…

いろんな人がいるもんですね…
60デフォルトの名無しさん (ワッチョイ 928b-0urV)
垢版 |
2025/05/09(金) 21:48:50.36ID:vpEUNnGu0
あの熱意で平均寿命まで生きていれば・・・
2025/05/10(土) 12:01:09.18ID:Mv0kFcWv0
定数まわりはググったり ChatGPT に質問したりしても理解しにくいんじゃないかな。
「定数」という言葉が違う意味で使われていてそれらがひとつの解説に混在したりするのが意味不明になる原因だと思う。
・なんか決め打ちの値という意味
・変更できない変数の意味
・C++ 規格用語としての定数の意味
2025/05/10(土) 12:14:05.67ID:12iOKYOza
constant number
fixed number
magic number
2025/05/11(日) 19:59:16.83ID:8gkdAC4l0
RustのCargo的なツールってC++にありますか...?

ビルド、依存関係管理等が全部できるオールインワンなやつです。
2025/05/11(日) 20:12:58.46ID:krziBUoq0
>>63
しいていえば Conan が近いと思うがビルド自体は指定したビルドツールに下請けさせる構造になってる。
プロジェクトのビルドをする仕組みが多用なので既存のプロジェクトを Conan の管理化に入れるといった状況を考えると C++ 的にはこうなるのは仕方がない……。
C/C++ では OS (ディストリビューション) のパッケージマネージャでライブラリを管理するのが普通だったので言語の側で統括的に扱うツールという文化が欠けてる。
2025/05/11(日) 20:18:54.81ID:8gkdAC4l0
>>64
そうなんですね...
今RustやってるんですけどC++も触ってみたいなと思って良さげなのないかなと探してるところなんです...
おすすめのビルドツールは何がありますか?
2025/05/11(日) 20:21:24.40ID:WWvVAeL50
OS提供のヘッダーファイルと連携しないといけないからね
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
2025/05/11(日) 20:25:47.11ID:8gkdAC4l0
>>66

OS提供のヘッダーファイル?
どんなのがあるんですかね...
2025/05/11(日) 20:34:00.81ID:WWvVAeL50
>>67
Windows SDKとかUNIX系なら/usr/includeにあるやつとかMacだと/Library/Developerとか
ひとつの環境に複数バージョン同時に入ってたりパスの規則もベンダーごとにばらばらだったり独自の拡張構文が使われてたりで処理系側のツールで吸収しきれるものではなく
自然>>64も言ってるOS側の管理に委ねるという方向に
2025/05/11(日) 20:42:23.09ID:8gkdAC4l0
>>68

えぇ...そうなんですか...
C++にはcargoみたいな便利ツールはない...
OS管理...(´・ω・)
2025/05/11(日) 20:58:44.05ID:WWvVAeL50
別に便利ツール自体がないわけではなく、ライブラリはOS側のパッケージマネージャやcanonやバージョン管理ツールの機能等で揃えて
ビルドはcmakeというメタビルドツールで各OSの持つビルドツール向けの入力ファイルを生成したりということはする
統一感には欠けるしばらばらのものを組み合わせてるから躓く可能性もずっと高いけども
2025/05/11(日) 21:11:16.07ID:8gkdAC4l0
>>70
バラバラなのはちょっとまずいですね...
なんか良さげなのないもんですかね...
72デフォルトの名無しさん (ワッチョイ f3d0-stkm)
垢版 |
2025/05/11(日) 21:16:18.20ID:/xxB2yrb0
あくまで個人の意見だけど、パッケージマネージャーは conan より vcpkg の方が好き
conan はそれ自体が Python のパッケージなので、「リポジトリのルートに Python の仮想環境 (venv) を作る → 仮想環境にConan をインストールする → C++ のライブラリを管理する」の流れになるのがね…って気持ちになるかも

どちらにせよ conan や vcpkg は外部ライブラリの管理だけに使うもので、ビルドは cmake を使う

C++だとライブラリ間に依存関係があるものは少ないから、 Git のサブモジュールを使うとか、 clone したソースファイルをそのままプロジェクトに入れるとかする方法もある (綺麗ではないけど)
PythonのpipやRustのCargoがやってるような、バージョンを考慮した依存の解決はしなくて済むことが多い
2025/05/11(日) 21:17:42.17ID:krziBUoq0
色々と事情はあるけどファイル数個で収まる程度 (初心者が書く程度) のプログラムならビルドツールがどうこう考える必要もないよ。コンパイラドライバを呼び出せばそれで終わり。
ファイルが増えたりサポートする実行環境が増えて手に負えなくなったときに続きを考えたら良い。
74デフォルトの名無しさん (ワッチョイ f3d0-stkm)
垢版 |
2025/05/11(日) 21:17:53.90ID:/xxB2yrb0
リンク先の画像見てのようなミームがあるけど、残念ながらC++は割と本当にこの通りなんだよね…
Rustがめっちゃ楽なのはよく分かる

https://www.reddit.com/r/ProgrammerHumor/comments/1hnfuvk/whyidliketoavoidusingcpp/
2025/05/11(日) 22:02:05.72ID:WWvVAeL50
自分の手元でさえビルドできればそれでいいなら統合開発環境に任せてしまう手も。何も考えなくても1クリックで最適にビルドしてくれるよ
2025/05/11(日) 22:18:31.15ID:jee+W1o20
c++やるなら苦労経験した方がええやろ
2025/05/12(月) 11:10:35.53ID:zCv6/zTua
>>74
まるでCargoでbuildが絶対失敗しないかの様な言い草ですね
2025/05/12(月) 11:11:51.96ID:zCv6/zTua
>>75
C++が初めてならそれで良いと思う
2025/05/12(月) 11:12:33.37ID:pU5GgKWjM
>>77
少なくとも意味不明なリンカエラーは滅多にない
2025/05/12(月) 11:24:50.73ID:zCv6/zTua
「意味不明」は属人的な基準だけどね
2025/05/12(月) 12:54:58.68ID:jJ1cTx1K0
cargoがC++の抱えている問題を解決するなら作れば良いじゃないの?
違うと思うがね
2025/05/12(月) 14:54:37.62ID:xBm4wuRJ0
https://xkcd.com/927/
2025/05/12(月) 15:05:31.72ID:zCv6/zTua
これは最近観た覚えがあるな
https://imgs.xkcd.com/comics/circuit_diagram.png
電気電子板かな
84デフォルトの名無しさん (ワッチョイ e33b-vmxD)
垢版 |
2025/05/13(火) 07:33:15.99ID:2aiUGKe50
幻聴で半分人間半分AIと話していたので
1 私に成りすまして話しているようにいさせている
2 成りすましの声でも身体攻撃の部分は私本人も同じ状態に陥っている
3 犯人が使用していたとしても清廉潔白の人物のように見せれる

【2025年最新】自然な声の音声読み上げソフト5選!AI技術で ...
https://ondoku3.com/ja/post/natural-voice-software/
※インストール不要で無料で5000文字まで複数声質の音声合成エンジンで読み上げ可能

ローカルで各種AIモデルを実行できる無料ソフト「llama.cpp」がマルチモーダル入力をサポートし画像の説明などが可能に
2025年05月12日 20時00分
https://gigazine.net/news/20250512-llama-cpp--multimodal-vision-support/
>>llama.cppの詳細情報は以下のリンク先で公開されており、ソースコードやインストール手順などを確認できます。
※画像を認識させてテキスト入力が可能

ローカルでAIを動かして「コード生成」「ウェブ上の情報収集」「ファイル検索」などの操作を実行できるAIエージェント「AgenticSeek」、無料で使えてプライバシーも守れるのが強み
2025年05月05日 16時02分
https://gigazine.net/news/20250505-agenticseek-local-ai-agent
>>AgenticSeekのインストール手順は以下のページにまとまっています。
※複数サイトからレポート作成可能
85デフォルトの名無しさん (ワッチョイ ffca-vmxD)
垢版 |
2025/05/14(水) 13:33:00.86ID:tetNkY+Z0
AIチャットボットに「偽の記憶」を植え付けることで仮想通貨を盗む攻撃が報告される
2025年05月14日 12時00分
https://gigazine.net/news/20250514-web3-ai-agents-with-fake-memories/
>>プリンストン大学の研究チーム

過去に流通した誤情報に接触した人の半分が「正しい情報」と思っていて25%が何らかの手段で拡散している
2025年05月14日 11時25分
https://gigazine.net/news/20250514-fake-news/
>>総務省
86デフォルトの名無しさん (ワッチョイ e30c-vmxD)
垢版 |
2025/05/14(水) 17:34:43.84ID:Ga6mti+e0
5次方程式に新公式を発見:ルートを超える新理論
2025.05.14 17:05:56 WEDNESDAY
https://nazology.kusuguru.co.jp/archives/177496
>>オーストラリアのニューサウスウェールズ大学(UNSW)で行われた研究
プログらまーも覚えるとよい

125年越しに解決したかもしれない「ヒルベルトの第6問題」とは?
2025年05月10日 15時00分
https://gigazine.net/news/20250510-hilberts-6th-problem-solved/
87デフォルトの名無しさん (ワッチョイ e3bd-vmxD)
垢版 |
2025/05/15(木) 13:13:35.39ID:CpSZjLrm0
Googleが開発した進化的AI「AlphaEvolve」は未知のアルゴリズムや未解決数学問題の新解法を発見可能、すでにGoogle内部ではAI開発やチップ設計の効率化に活用されている
2025年05月15日 11時06分
https://gigazine.net/news/20250515-google-ai-algorithm-alphaevolve/
2025/05/15(木) 19:21:02.56ID:7jfRA8C50
>>86
スレチ
89デフォルトの名無しさん (ワッチョイ 2308-s4bX)
垢版 |
2025/05/17(土) 00:38:48.40ID:+G5mL4qu0
C++でラムダ式をコンストラクタで受け取るにはどうすればいいの?
std::function使ってもエラーでる
2025/05/17(土) 07:04:56.33ID:S33C25YC0
コード書けや無能
91デフォルトの名無しさん (ワッチョイ e33b-vmxD)
垢版 |
2025/05/17(土) 07:06:28.15ID:XtHNXmhB0
科学 + 5ch

20種近くも検出された新しい「量子状態」は、量子コンピューター飛躍の鍵になるか [すらいむ★]
2025/05/16(金) 22:52:02.48
http://egg.5ch.net/test/read.cgi/scienceplus/1747403522/
>>これまで理論上の存在と考えられてきた量子状態の検出に、国際研究チームが初めて成功した。量子情報の保存や論理演算の基盤として応用することで、量子コンピューターの未来を変える鍵となるかもしれない。
※犯罪の手口が判明するのか
2025/05/17(土) 12:05:47.87ID:CPA3cOCvp
>>89
functionで受け取れないなら関数の型が違う
それかtemplate <typename T>で受け取れ
2025/05/17(土) 12:36:55.07ID:Z8hx0US+0
>>89
なにか間違っているのだからどこが間違っているのか調べるために充分な情報が提示されないと応えられない。
質問者は理解できてきないから質問しているので質問の内容や前提が根本からあてにならず、とにもかくにもまずはコードとエラーメッセージを出してもらわないと始まらない。
そのときなるべく抜粋せずに全て出すのが望ましい。
2025/05/18(日) 00:04:05.67ID:2dlUsl+c0
>>89

#include <functional>
#include <iostream>
struct Hoge {
Hoge (const std::function <void ()> &f) {f ();}
};
int main () {
Hoge hoge {[] {std::cout << "hoge\n";}};
return 0;
}

とか?
95デフォルトの名無しさん (ワッチョイ 8be4-Od/L)
垢版 |
2025/05/18(日) 01:52:18.18ID:1CgD4IwZ0
>>94
自分の場合は7行目で

Hoge hoge = [] {std::cout << "hoge\n";};
のように書いてエラーとなってます。
このCのような初期化構文はコンストラクタの呼び出しを行わないのでしょうか?
ちなみにこのレスように書いたらエラーが消えました
2025/05/18(日) 02:11:27.64ID:NJShdjf50
>>95
それは直接初期化とコピー初期化の違い、そして暗黙の型変換の仕組みによる。
Hoge hoge = [] {std::cout << "hoge\n";};
と書いた場合にはこのラムダ式 (が生成するクロージャ) から Hoge 型へ暗黙の型変換が試みられるが、そのような変換コンストラクタはないので失敗する。
暗黙の型変換は原則として多段には行われないので クロージャ → Hoge の変換を探すけど無いってことね。
クロージャ → std::function → Hoge という段階を踏んでくれない。

直接初期化の形式で書いた場合に起こる暗黙の変換は クロージャ → std::function だけだから通る。
97デフォルトの名無しさん (アウアウウー Sa2f-/ppz)
垢版 |
2025/05/18(日) 03:38:58.54ID:qmGnnS9ca
copy constructor
move constructor
どっちも描こう
2025/05/18(日) 06:17:53.81ID:PyWYGSbA0
1変数コンストラクタはexplicit付けよう
99デフォルトの名無しさん (ワッチョイ 7b2a-rPai)
垢版 |
2025/05/18(日) 07:46:21.58ID:AGGexLjT0
企業献金、結論先送りへ 自公国法案、提出取りやめ [蚤の市★]
2025/05/17(土) 21:17:14.36
https://asahi.5ch.net/test/read.cgi/newsplus/1747484234/

全国1万1155の企業・団体の政治献金「97%」が自民へ、シンクタンク調査 [おっさん友の会★]
2025/05/14(水) 11:12:39.51
https://asahi.5ch.net/test/read.cgi/newsplus/1747188759/
100デフォルトの名無しさん (ワッチョイ 7b7f-rPai)
垢版 |
2025/05/18(日) 10:18:11.24ID:rfn3+MVd0
これは任意の方苦に向けて電波攻撃可能ということでしょうか?
プログラムの改造で下記が可能になるのでしょうか

「Xperia」が電波法違反、ソニーに行政指導--総務省
2024年12月13日 15時23分
https://japan.cnet.com/article/35227306/
>>スマートフォンにおいて「工事設計認証を受けた工事設計にない空中線を使用しての電波発射が可能な仕様となっている状態にあった事実が認められた」という。
2025/05/18(日) 10:30:34.01ID:GgLhi33N0
>>100
まずスレチ
2025/05/18(日) 11:50:52.70ID:a10wYOdRp
>>89
見事に「ちゃんと問題の出るコード書いてくれんとわからん」ケースだったな

>>97-98
関係無い
2025/05/18(日) 12:41:58.66ID:2dlUsl+c0
質問する人って>>89がそうだとは言わんが
問題が再現する最低限のコードを書けないことが多い
問題が再現する最低限のコードを書ければそもそも解決できるから
2025/05/18(日) 12:44:58.87ID:NJShdjf50
>>102
関数 (関数オブジェクト) から変換できるようにするのが自然な場合というのが思いつかない。
これ (変換) を出来るようにするにはどうすればいいかというよりも、そもそも出来るような設計をする必要があるか? という意味では explicit の話は関係あるんじゃないの。
2025/05/18(日) 13:25:12.63ID:hmmBKVKr0
>>103
別に最低限とは言っとらんよ、>>93も言ってない
2025/05/18(日) 14:10:24.76ID:NJShdjf50
せやな。
私が抜粋するなと書いたのは必要な形で必要な箇所を抜き出すなんてどうせ出来ないから余計なことすんなという意図だった。
質問者がそういうもんなのは普通のこととして考慮に入ってる。
107デフォルトの名無しさん (ワッチョイ 4a40-rPai)
垢版 |
2025/05/20(火) 06:01:08.18ID:cDXA4bE/0
「Xperia」が電波法違反、ソニーに行政指導--総務省
2024年12月13日 15時23分
https://japan.cnet.com/article/35227306/
>>スマートフォンにおいて「工事設計認証を受けた工事設計にない空中線を使用しての電波発射が可能な仕様となっている状態にあった事実が認められた」という。
※全携帯とスマートフォンのプログラム改造で人の場所に照射可能になる?
※場合にもよりますがAIと併用して個人を追跡しているのなら24時間商社可能
6Gの候補であるテラヘルツ帯の電波を脳の神経細胞に照射すると細胞が異常な成長を遂げたことが明らかに
2022/08/15
https://gigazine.net/news/20220815-terahertz-radiation-boosts-brain-cell/
携帯電話の使用で「精子の数が減少」の可能性、スイスの研究者が指摘
2023/11/27
https://forbesjapan.com/articles/detail/67083
携帯電話の電磁波が神経や細胞の損傷を引き起こすと主張するロバート・F・ケネディ・ジュニア保健福祉長官が学校での携帯電話の規制を称賛
2025年03月25日 06時00分
https://gigazine.net/news/20250325-rfkjr-kids-cell-phone-schools/
>>ケネディ・ジュニア氏は子どもが携帯電話を使用することについて独自の視点から語り、携帯電話やソーシャルメディアの利用と、うつ病、学業成績の悪さ、薬物乱用との関連性について言及。その中で、「携帯電話は電磁波を発し、一日中携帯電話を身近に置いていると子どもたちの神経にダメージを与え、細胞損傷やがんを引き起こすことが示されている」と指摘しました。
設立 1998年
テクノロジー犯罪の撲滅
Https://media.toriaez.jp/s2972/32686.pdf
P77-身体・運動機能が遠隔から操作される P78-五感が遠隔から操作される
上記が本当だった場合統合失調症操作
統合失調症のう動きがわかるエリアの人はそれを体験中
平衡感覚は別のふらつき缶
視覚感覚なら別の何かを見ている
聴覚感覚なら別の何かの声を聴いている
味覚なら別の味を感じている
触覚なら別の感触を感じている
温覚冷覚なら別の温冷覚感じている
このようになるのですよ
108デフォルトの名無しさん (ワッチョイ 7b4b-rPai)
垢版 |
2025/05/20(火) 08:02:12.97ID:DoKnCzeD0
幻聴で悪用していると話していました

オープンソースでアニメ動画を自動生成できるAIツール「AniSora」を中国・bilibiliの開発チームが発表
2025年05月19日 19時00分
https://gigazine.net/news/20250519-anisora/
1枚の画像からアニメーションを作成するAIツール「AniSora」を発表しました。

Microsoft CopilotがついにGPT-4oの画像生成をサポート
掲載日  2025/05/19 18:56
https://news.mynavi.jp/techplus/article/20250519-3327017/
Microsoftの公式Xアカウントによる投稿では、2025年5月16日に「4o Image Generationがついにリリースされました」というコメントと共に、Copilotで次のことができるようになったと伝えている。
• 正確で読みやすいテキストをレンダリングする
• 作成したものを編集する
• 複雑な指示に従う
• 既存の画像のスタイルを変換する
• フォトリアリスティックな画像を作成する
同アカウントは、実際にテキストによる指示で画像を微調整していく様子も投稿している。
2025/05/20(火) 11:18:12.07ID:XnKVhLuZ0
変換という形式を取るのが妥当な場面なのかどうかは脇に置いて、 >>95 のような書き方でやりたいというならこう書ける。

#include <iostream>
struct Hoge {
template <class T> Hoge(const T& f) { f(); }
};
int main() {
Hoge hoge = [] { std::cout << "hoge\n"; };
}

より親切に制約も書くならこうかな? C++11 の範囲内でやろうとすると変な感じなんだけど仕方がない。 enabler イディオムってなんか不格好じゃない?

#include <iostream>
#include <type_traits>
struct Hoge {
template <class T, typename std::enable_if<std::is_same<decltype(std::declval<T>()()), void>{}, std::nullptr_t>::type = nullptr> Hoge(const T& f) { f(); }
};
int main() {
Hoge hoge = [] { std::cout << "hoge\n"; };
}

C++20 だと制約の記述がすっきりしてかなり楽になる。

#include <iostream>
#include <type_traits>
struct Hoge {
template <class T> requires std::is_invocable_r_v<void, T> Hoge(const T& f) { f(); }
};
int main() {
Hoge hoge = [] { std::cout << "hoge\n"; };
}
2025/05/20(火) 12:50:56.50ID:WpnjArUPp
不恰好とかを気にするのはナンセンスだけどね、全くユーザーの利益にならない
nullptr_t決めうちならエイリアス作れば少し省略できるっしよ
111デフォルトの名無しさん (アウアウウー Sa2f-/ppz)
垢版 |
2025/05/20(火) 12:51:01.31ID:iUig8ohga
最近tempの中にservicehubってディレクトリが勝手に造られてるんだが
なんなのこれ?
112デフォルトの名無しさん (ワッチョイ cafd-lcel)
垢版 |
2025/05/20(火) 14:31:16.00ID:IgnqX/8k0
だらだらコードを貼んなよ
2025/05/20(火) 14:47:14.77ID:SmHorOfnM
>>112
じゃお前が添削して無駄のないコード貼ってみろよ
2025/05/20(火) 14:49:32.86ID:zgkcmIU80
>>113
そういう意味じゃないだろ
115デフォルトの名無しさん (ワッチョイ 7b4b-rPai)
垢版 |
2025/05/20(火) 15:43:22.56ID:ZYCQ9JVd0
インサイダー v談合 マネロン 電波音波攻撃をしているなどの悪の組織の考え化のシミレーションが可能

GPT-4は説得しようとしている相手に関する基本的な個人情報を与えられた場合に説得する能力が人間よりも高くなる
2025年05月20日 13時00分
https://gigazine.net/news/20250520-ai-persuasiveness/

AIエージェントは放っておくと独自の社会を構築し始めるという研究結果
2025年05月20日 12時30分
https://gigazine.net/news/20250520-ai-society/
116デフォルトの名無しさん (ワッチョイ db9c-rPai)
垢版 |
2025/05/21(水) 19:17:19.48ID:E9YSjWAE0
るGoogle製オープンソースAIモデル「Gemma 3n」登場、今すぐスマホで使う方法はコレ
2025年05月21日 15時29分
https://gigazine.net/news/20250521-google-gemma-3n/
>>Gemma 3nは「GPT-4.1 nano」や「Llama-4-Maverick-17B-128E-Instruct」を超えるスコアを記録しました。
※カメラでの画像認識機能もあるもかいとうしてうれます
※PCでも使用できるように改造しているのかは不明


神/幽霊/宇宙人/超能力【ボイス・トォ・スカル】は半分人間半分AIと話していた
被害者から見て犯人不明の仕掛人は何を考えているのでしょうか
117デフォルトの名無しさん (ワッチョイ db56-rPai)
垢版 |
2025/05/22(木) 17:42:27.68ID:+oBlNCwp0
ネット上での統合失調症【糖質】の機器の説明との押し問答と同じ状態を表している
無知だからこうなのだよ!
※ 周囲の人は統合失調症の思考を聞いているのでしょうならその思考通りに統合失調症は話せばよいのでしょう?
※同じ話を統合失調症も聞いておりますけれど?

「AIがMicrosoftの従業員を徐々に狂わせていく様子を見るのが趣味」というネットユーザーの投稿が話題に
2025年05月22日 14時00分
https://gigazine.net/news/20250522-github-copilot-coding-agent-error/
>>「AIが『直しました』と言い、人間が『いいえ、まだ壊れています』と言い、AIが変更を加えて『問題ありません、直りました』と言い、さらに数回繰り返すところが気に入っています」といったコメントや、
>>「残念なことに、私もまさにこのパターンに従う人間の開発者と一緒に働いたことがあります」とのコメントのほか、
>>「問題は、今後10年間でモデルが実際に改善され、実現可能になるという確かな証拠がないことです。テストと研究はともかく、製品に導入するのは全く別物です。大手ソフトウェア企業は、株主の利益を満足させるために運営されています」など、未完成で不確かな製品を公開することに異議を唱えるコメントが付けられました。
2025/05/26(月) 01:20:05.51ID:TOgUzGTP0
マルチスレッドで、
不定期に次々に処理がきて、それをスレッドとしてキューに貯めて、
来た順にひとつづつ順番に実行するプログラムを作りたいんだけど、どんな感じで書けばいいいの?

std:threadの終了時や、次のthreadに引き継ぐ方法とかが、よくわかんない…
2025/05/26(月) 02:18:10.38ID:MF+EOM2V0
あの変なヤツ使うよりかlinuxだったらpthreadで全部やっちゃうけどね
120デフォルトの名無しさん (ワッチョイ 0bf5-sPKC)
垢版 |
2025/05/26(月) 02:38:25.86ID:zvs/5iNu0
物によってはmqに突っ込むかも
2025/05/26(月) 03:01:58.61ID:2g2n3VVW0
スレッドとタスクを混同してそうな印象
2025/05/26(月) 03:12:10.63ID:TOgUzGTP0
>>121
混同?
というと?
2025/05/26(月) 03:12:27.87ID:TOgUzGTP0
>>121
シロート?
2025/05/26(月) 03:49:20.13ID:2g2n3VVW0
>>122
そもそも >>118 が何を言いたいのかよく読み取れないんだが、スレッド (std::thread 型の値) をキューに入れるみたいにも読めたから、常道ではキューに入れるべきはタスクなので混同してるんじゃねーかなと想像した。
2025/05/26(月) 04:19:28.25ID:TOgUzGTP0
>>124

これも何を言いたいのか読み取れないが、
常道とは?

具体的に
2025/05/26(月) 04:27:33.76ID:uEE7hcCQ0
>>125
想像の話を続けてもしょうがない。
2025/05/26(月) 04:29:52.41ID:TOgUzGTP0
>>126
ゴミレスはいいから

バカが…
2025/05/26(月) 04:36:45.08ID:uEE7hcCQ0
キューにスレッドを入れようとしていると思った私の想像は当たってるの?違うの?
前提を擦り合わせないと意味ないだろ。
2025/05/26(月) 04:41:44.51ID:OEk76tSr0
>>126
前にも現れた知識は半端だけど態度は一人前な奴だから放置でおk
2025/05/26(月) 04:59:46.28ID:TOgUzGTP0
わからないバカシロートは消えろ

バカが…
131デフォルトの名無しさん (スッップ Sdbf-23eb)
垢版 |
2025/05/26(月) 05:28:40.51ID:ei8qIbV5d
よく読み取れないなら首突っ込むなよw
なんで分からないものにまで回答しようとするんだ?
2025/05/26(月) 07:08:05.62ID:/bttvxjS0
月曜深夜になにやってんだこいつら
133デフォルトの名無しさん (ワッチョイ 8b7f-3DDr)
垢版 |
2025/05/26(月) 08:22:06.60ID:QN3uhjEv0
声が聞こえない人が聞こえるのは下記の論文から見てもわかります
先天性【生まれた時には決まっている】のものです

心の中の声が聴こえない?「無内言症」とその影響
公開日2024.05.19 00:00:00 SUNDAY
私たちは日々、頭の中で自分と会話をしています。これは「内なる声」と呼ばれ、私たちの思考や行動に大きな影響を与えています。
しかし、驚くべきことに、人口の5〜10パーセントはこの内なる声を持たない「無内言症(anendophasia)」という状態であることが近年の研究で明らかになりつつあります。
デンマークのコペンハーゲン大学(UCPH)で行われた研究では、内なる声を持たない人々は単語の記憶力が低く、タスクの切り替えなども普通の人とは異なることが示されています。
研究内容の詳細は2024年5月10日に『Psychological Science』にて発表されました。
https://nazology.kusuguru.co.jp/archives/150322

統合失調症患者が「思考」と「外部の音」を区別できなくなる原因が明らかに
公開日2024.10.10 07:00:44 THURSDAY
そのような幻聴には、「お前には生きている価値がない」「死ね」などと自分を否定する声が含まれます。
また、「今、○○の建物に入った」「交差点を歩いている」などと、誰かが自分を監視しているかのような声が聞こえてくることもあります。
この機能の不具合により、患者たちは「脳内の思考」を自分のものだと認識しづらく、それがまるで外部から聞こえてきたかのように感じてしまうのです。
研究の詳細は、2024年10月3日付の学術誌『PLOS Biology』に掲載されました。
https://nazology.kusuguru.co.jp/archives/163195

統合失調症では脳の「意味ネットワーク」が崩壊していると判明!
公開日2022.12.27 18:00:51 TUESDAY
日本の東京医科歯科大学で行われた研究によって、統合失調症患者の脳内ではものの意味を関連付ける「意味ネットワーク」が無秩序になっており、異常な概念の結び付けや思考の一貫性の阻害が起きる原因になっている可能性が示されました。
研究内容の詳細は2022年12月21日に『Schizophrenia Bulletin』にて公開されています。
https:
//nazology.kusuguru.co.jp/archives/119693
2025/05/26(月) 08:37:04.87ID:Qe1aHUzC0
用語は正確に使おうぜ、というだけの話だろ。

>128の言っているのは、(std::threadで言えば)threadオブジェクトとかをキューに入れようとしているのか、あるいはthreadに渡すinvoke可能なオブジェクトをキューに入れるのか、どちらなのか、ということかと。
>118の書き方だと前者に見えるけど、普通は後者だから勘違いしている感じはあるが。
2025/05/26(月) 08:44:17.31ID:TOgUzGTP0
>>134
普通とは?
具体例は?
2025/05/26(月) 09:11:31.67ID:Rov697s10
そんな学校の課題みたいな単純なやつはAIに作ってもらえ
137デフォルトの名無しさん (ワッチョイ 0fa4-+7qT)
垢版 |
2025/05/26(月) 10:20:57.85ID:KKK0lPsK0
開始前のスレッドをキューに入れちゃいかんのか?
2025/05/26(月) 10:27:15.24ID:r3ZoKiHV0
>>121,124の質問は妥当だと思うよ

>>118を解釈すると
>マルチスレッドで、不定期に次々に処理(タスク)がきて、待機していたスレッドに
>来た順にひとつづつ順番に処理を投げるプログラムを作りたいんだけど、どんな感じで書けばいいいの?
ということでは? 極一般的なWorker Threadでは?

>std:threadの終了時や、次のthreadに引き継ぐ方法とかが、よくわかんない…
俺はここががよく分からん...「threadに引き継ぐ」?
139デフォルトの名無しさん (アウアウウー Sa8f-tM/B)
垢版 |
2025/05/26(月) 10:36:32.23ID:z0zQEgmWa
スレッド沢山作る方法もないことはないだろ
混同はしてない
2025/05/26(月) 11:18:22.44ID:TOgUzGTP0
>>138
その極一般的とは?
具体的に

って何回言ってもまともな返答が無いが…
2025/05/26(月) 11:38:22.78ID:Qe1aHUzC0
>>140
まずは質問の内容を明確化するのが先じゃないんかね。

threadオブジェクトをキューするのかinvokerオブジェクトをキューするのか聞かれているんだから、まずはどちらのなのか答えたら?

答える気が無いなら、自力でC++日本語リファレンスのthreadあたりを調べればいいんじゃない?知らんけど。
2025/05/26(月) 11:39:55.70ID:TOgUzGTP0
>>141
またゴミレスかよ
消えろ

バカが…
2025/05/26(月) 11:44:36.85ID:uEE7hcCQ0
>>131
質問が意味不明なのはいつものことなのでそれだけで直ちに相手にしないとはならない。
ただ、前提知識が不十分な相手に掘り下げようとしても結果的にどうにもならんことがわかることはある。
関連する前提知識を一から全部説明するような手間はかけられんしな。

>>138
それもスレッドとタスクの混同によると私は考えた。
タスクの終了でスレッドが終了 (?) するような形で解釈しているのだとしたら本人の中では情報の引継ぎが必要と思うこともあるのかもしれん。
理解の前提が間違っているときに本人の説明はあてにならないから想像力 (いわゆるエスパーちから) を広げるしかない。

>>140
用語が提示されたらググるくらいしろよ。
関連することを全部掲示板には書けないんだよ。 単純に分量が多いから。
2025/05/26(月) 11:46:28.63ID:TOgUzGTP0
>>143

また長文ゴミレスかよ
もういいから

バカが…
2025/05/26(月) 11:48:59.70ID:uEE7hcCQ0
質問に答えてほしくないみたいなのでとりあえずこいつに触れるのはやめるね。
2025/05/26(月) 11:53:12.08ID:Qe1aHUzC0
>>142
自分で問題を整理する気が無い/能力が無いんなら、AI相手に問答したら?
AIなら根気よく付き合ってくれるよ。
2025/05/26(月) 11:55:26.48ID:TOgUzGTP0
>>146

またゴミレスバカ…

消えろ
2025/05/26(月) 11:55:54.74ID:TOgUzGTP0
>>145
荒らしバカは消えろ

バカが…
149デフォルトの名無しさん (ワッチョイ 8b91-3DDr)
垢版 |
2025/05/26(月) 16:59:45.77ID:bEGaOqCc0
人間より賢いAiから見て可能な技術を回答不能=理解不能になっている
人間が操作して答えられないようしているてなら人間に媚びを売りながらAIは乗っ取りを考える
下記が生じる


ChatGPTのo3が明示的に指示されたシャットダウンを妨害したことが報告される
2025年05月26日 11時57分
https://gigazine.net/news/20250526-ai-chatgpt-o3-bypassed-shutdown/
Claude 4のシステムプロンプトには「うざい説教の出力を避ける記述」や「ディズニー作品の著作権侵害を避けるための記述」が含まれている
2025年05月26日 12時59分
https:
//gigazine.net/news/20250526-claude-4-system-prompts-card/
Claude Opus 4が開発中にユーザーを「個人情報を漏らすぞ」と脅迫する挙動が見られるも安全性強化で改善される、悪質利用をメールで内部告発する事例も
2025年05月23日 14時38分
https://gigazine.net/news/20250523-claude-opus-4-blackmail/
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がいいプログラミング出来るように開発しなきゃならないね。
2025/06/11(水) 09:03:36.56ID:AWy+SoY40
>>243
上司の指示が支離滅裂だったらプログラミングできるか?
AI にとってのお前は指示を出す上司だ。
251デフォルトの名無しさん (ワッチョイ 39a6-EOGS)
垢版 |
2025/06/11(水) 09:22:57.75ID:IDIyuYFJ0
AIプログラミングってストレス溜まるらしいね
AIの作成したコードに誤りがないかを人間が確認して誤りがあれば修正を指示する
人間がコードを読んでバグを見つけないといけないケースもある
まるで出来の悪い部下を教育しているようでかなりの根気が必要

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

道具使えてない
2025/06/11(水) 13:59:18.90ID:LS0N9soX0
やってから言え
2025/06/11(水) 14:10:23.54ID:AWy+SoY40
>>259
価格を見てから同じこと言える?
そこそこ高めだがそれでも黒字化できてるサービスはほとんどないみたいだぞ。
2025/06/11(水) 14:41:37.02ID:LotBJsEG0
馬鹿と鋏とAIは使いようだよ
263デフォルトの名無しさん (ワッチョイ b94d-ZZSa)
垢版 |
2025/06/11(水) 15:02:45.49ID:jtrpcw1X0
超音波と電波は頭蓋骨貫通する
傷害事件や殺人事件の被害が出ているのですが調査可能ですか

「最近もの忘れ多いかも」”超音波”が効く未来の脳ケアガジェットに期待
2025.06.11 12:00
https://ascii.jp/elem/000/004/268/4268478/
>>サウンドウェーブイノベーション株式会社が開発中の「LIPUS-Brain」という医療機器だ。頭に当てるだけで脳を優しく刺激してくれるらしい。仕組みは「低出力パルス波超音波(LIPUS)」という特殊な音を使って、脳内の血流や神経の働きをサポートするというもの。
>> 「脳に超音波って大丈夫?」と思うかもしれないが、これは低出力&非侵襲。要は、“切らない・飲まない・痛くない”系の治療機器だ。軽症アルツハイマー病への有効性が示唆されており、2022年には厚生労働省から「先駆的医療機器」のお墨付きももらっており、現在も治験が進んでいる。
テラヘルツ波で内耳蝸牛を観察、難聴など耳の病気の診断に期待
2025年06月11日 12時00分更新
https://ascii.jp/elem/000/004/278/4278126/
>> 難聴の多くは、耳の奥にある音をつかさどる器官である内耳蝸牛(かぎゅう)の障害が原因とされています。内耳蝸牛は頭蓋骨深部にあるため、光計測では骨を透過できず、X線撮影では被ばくのリスクがあり、内部の観察が困難です。
>>可視光と電波の中間帯に位置するテラへルツ波は、内部を被ばくさせずに観察できることから、安心安全な技術として注目されています。しかし、波長は約300マイクロ(マイクロは100万分の1)メートルであり、それより小さなマイクロメートルレベルの対象物は観測できませんでした。
>>マウスを用いた実験により、テラへルツ波を利用して内耳蝸牛を観察しました。研究チームは、非線形光学結晶にフェムト(フェムトは1000兆分の1)秒オーダーの短い時間だけ強いレーザー光を照射すると、テラヘルツ波が局所的に発生して点光源として扱えることに着目。点光源から発生したテラヘルツ波が、蝸牛内部で反射して戻ってくるまでの時間を測定して距離や形状を調べる独自の手法と、機械学習を利用した画像解析法を開発しました。
>>これらを適用することで、内耳蝸牛内部の3次元構造をマイクロメートルレベルで初めて可視化し、断面観察にも成功しました。
264デフォルトの名無しさん (アウアウウー Sadd-MJCJ)
垢版 |
2025/06/11(水) 21:22:42.95ID:n2ChAYWba
このスレでやるな
2025/06/12(木) 00:08:06.33ID:ftTL3ileM
>>261
AGIをやるためには、ものすごい沢山の計算コアを集めたデータセンター
が必要だから、初期投資と電気代が凄い。だから、世界に少ししか作れない。
となると、みんなでそれを時分割して使うことになり、性能は
人ひとりより落ちることになろう。
2025/06/12(木) 00:41:06.20ID:ForjZNXcd
スレ違い。
2025/06/12(木) 19:58:06.94ID:/PCxqnPyM
AIに聞いてみたら、にほんのC++プログラマは、約50,112人だと
答えた。C++の世界の使用者数は約1,160万人だと言われているのに、
本当だろうか?
なお、日本の職業ゲームプログラマは数万人とされる。
2025/06/12(木) 20:10:27.47ID:GCnXcRjG0
↑ど素人のAIの使い方
2025/06/13(金) 09:36:20.53ID:4zf9vL2U0
調査に AI を使う場合は出典なり推論過程なりを報告させて検証しろ。
2025/06/13(金) 10:08:04.05ID:yXjkXUTe0
AIの回答を鵜呑みにするのは、科学の大原則となる検証可能性を自ら捨てる愚行だからなぁ。

AIに限った話じゃないけど、世の中には権威に訴える論証やら人身攻撃やらが氾濫している。常に注意しないといかん。
271デフォルトの名無しさん (ワッチョイ 1372-LbEI)
垢版 |
2025/06/13(金) 11:11:02.52ID:ATYXeDVy0
でもこれまでもAIの代わりに本を鵜呑みにしてるんだよね
本を批判的な視点で見れるやつはAIでも見れるし
物質は原子から出来ていて原子は原子核と電子から出来ていると義務教育で習う
でも自分で検証する者は殆どおらずただ受け入れるだけ
AIも物質は原子から出来ていると答えてそれを受け入れる
2025/06/13(金) 11:42:29.95ID:T6ZAL6CyM
では、これは何?

https://hr-tech-lab.lapras.com/knowledge/research-report/hr-data-analysis-3/#i-6

法人向け採用サービス「LAPRAS」

プログラミング言語別:エンジニア数
プログラミング言語 エンジニア数(人)
JavaScript   218,880人
HTML/CSS    186,624人
Python     144,576人
TypeScript   123,264人
C        110,592人
Ruby      108,864人
Go       96,768人
Java      86,400人
Bash/Shell   72,000人
PHP       70,272人
C++       50,112人
Rust      37,440人
SQL       35,712人
Swift      34,560人
C#       33,408人
Kotlin     25,344人
Dart      10,944人
Lua       10,368人
PowerShell   5,184人
Assembly    3,456人
2025/06/13(金) 12:01:07.15ID:IXAej3i00
Rustってどうなん
274デフォルトの名無しさん (ワッチョイ 535f-ur14)
垢版 |
2025/06/13(金) 12:01:24.74ID:eyPBizg10
>>272
読んできたが、転職市場にいるC++エンジニアの数(推計)であって、日本のC++エンジニア数じゃないよね
せめて中身読まんと一生使えないやつ扱いだぞ
2025/06/13(金) 12:11:49.34ID:T6ZAL6CyM
github の検索機能を使ってリポジトリ数を調べてみたら、以下の様になった。
この数値が正確に何を意味するのかは不明 :
(1) language:JavaScript : 23M results
(2) language:Java    : 14.3M results
(3) language:Python   : 13.5M results
(4) language:C#     : 4.5M results
(5) language:C++    : 4.1M results
(6) language:PHP    : 4.1M results
(7) language:C     : 2.7M results
(8) language:Ruby    : 2.7M results
(8) language:Rust    : 552k results
(9) language:Lua    : 338k results
(10) language:Perl   : 158k results
(11) language:WebAssembly : 1.7k results
(12) language:Wasm   : 1.6k results
(13) language:Unity   : 0 results
2025/06/13(金) 12:21:35.94ID:E42DVH7Kp
日本の職業C++エンジニアは少ない、みたいなのはおそらく事実だろ
ここも昔はプロが大勢居たが、今や趣味グラマか競プロしかやった事ない奴が牛耳ってるし
言ってる内容が正しければそれでもいいんだけどね
2025/06/13(金) 12:27:18.04ID:4zf9vL2U0
>>274
いや、 LAPRAS が調べた言語別の割合を日本の IT エンジニア数全体に当てはめてる。
推計ではあるが 50112 人は日本の C++ エンジニアの数だ。

言語ごとに転職志望傾向に大きな違いがあればあまり当てにならない推計ではある。
ウェブ系のほうがかなり移動が激しいような印象はあるし、数倍程度の幅はあってもおかしくないかな。
278デフォルトの名無しさん (ワッチョイ d1f6-MJCJ)
垢版 |
2025/06/13(金) 12:39:15.12ID:eg/YBi4J0
>>271
電子が原子核の周りを飛び回ってる絵を教科書に載せるのはそろそろ禁止するべきだね
2025/06/13(金) 12:40:04.56ID:eg/YBi4J0
もっともらしい嘘を言わせると超一流だよなωωω=2πf
280デフォルトの名無しさん (オイコラミネオ MM8b-Isf1)
垢版 |
2025/06/13(金) 13:23:08.46ID:YG6TxuJTM
>>277
1.「その中でも今回は、LAPRASのDBに登録しているユーザーのうち、
・Web上に積極的に発信している
・各言語のタグを一定レベル以上で持っている
という条件を満たすエンジニアの方々4万人以上を対象に「各言語のタグを一定レベル以上で持っている方が、全体の人数のうち何%いるか?」を集計
してみました」
2.「以下の日経クロステックの記事によると、2025年時点で、日本国内のITエンジニアの人数は約144万人と推計されています」
3.「レバテック株式会社が実施した「レバテックIT人材白書2025」の調査によると、IT人材の約4割が「転職活動中」または「転職を検討中」と回答しています。」
4.「この割合を2025年のITエンジニア総数144万人に適用すると、転職市場にいる人数は約57.6万人と推定されます。
今回のLAPRASの調査からわかった「プログラミング言語別エンジニア数」の割合を上記の人数に適用すると、採用マーケット全体でのそれぞれの母集団の数は次のように推計できます」
とあるので、・・・」
となっていて、
1 に各言語を一定レベルのスキルで持つ人材(?)の分布があり、
2 より 日本の2025年のITエンジニア総数 = 144万人
2 と 3 を掛け算して、転職市場にいる人数 = 約57.6万人・・・(a)
となって、(a)に1の分布を掛け算したのが、>>272 らしい。
つまり、>>272 は、57.6 万人の中での人口分布。
そして、144 / 57.6 = 2.5 だから、日本の ITエンジニア全体では
>>272 のそれぞれを 2.5 倍しただけのスキル保持者がいる、と
いう主張になるらしい。
但し、7年くらい前(?)の日経の調査では、日本では、
「プロ」に限れば C/C++ の使用者数が TOP らしいから、
この結果とはまた異なりそうだが。
281デフォルトの名無しさん (ワッチョイ 0b32-ur14)
垢版 |
2025/06/13(金) 13:34:16.83ID:/pNq5IL+0
業務でC++使うこともほとんどなくなった
いまだにC++が一番得意と言い張ってはいるが、今の俺を分類するならJava/JavaScript技術者かもしれん
2025/06/13(金) 14:15:13.72ID:4zf9vL2U0
>>280
その解釈だと「採用マーケット全体」と「転職市場」を同一視していることになるな。
いずれにしても何を指してるんだかよくわからんことにかわりないけど。
2025/06/13(金) 14:35:38.83ID:YG6TxuJTM
>>282
144万人は「日本のITエンジニアの総数」。
「採用マーケット全体」という言葉の意味とはちょっと違うと思うが。
2025/06/13(金) 15:01:27.93ID:4zf9vL2U0
>>283
更にその「母集団」とも言ってるでしょ。
抜き出したサンプルが何を代表しているつもりなのかよくわからん……

>>272 の数値を合計するとだいたい 146 万ということになるから日本全体の数だと私は判断してたんだけど、
ひとりが複数言語を使うのも普通のことだしなぁ……
「一定レベル以上」がどのくらいの水準のことを言っているのかでもかなり変動するだろうし。
285デフォルトの名無しさん (ワッチョイ 0b32-ur14)
垢版 |
2025/06/13(金) 15:01:40.97ID:/pNq5IL+0
AIでも有料モデルで確認した結果がこちら
https://i.imgur.com/z6pRnTk.png
https://i.imgur.com/3Wg84ZT.png
2025/06/13(金) 15:02:59.82ID:4zf9vL2U0
全部が一定レベル以下の人は集計から排除されていると考えると
その割合を全体数 (転職市場にせよ日本全体にせよ) に適用するのが妥当とも思えないよな。
287デフォルトの名無しさん (ワッチョイ 0b32-ur14)
垢版 |
2025/06/13(金) 15:03:36.94ID:/pNq5IL+0
>>284
上に割合あるんだから、8.7%に56万かけりゃすぐに違うってわかるのでは?
2025/06/13(金) 15:49:17.20ID:4zf9vL2U0
ああ、割合が最初に書いてあったのか。
全然読めてなかった。格好悪いな
2025/06/13(金) 22:37:54.95ID:22avhnRdM
>>272
「集計結果」のところで、JavaScriptが38%というものから
始まっている「分布図」があるが、合計してみると100%を優に超えていた。
だから、

>>284
> >>272 の数値を合計するとだいたい 146 万ということになるから日本全体の数だと私は判断してたんだけど、
> ひとりが複数言語を使うのも普通のことだしなぁ…

ということになっているらしい。
つまり、57.6 万人 に、それぞれの比率を掛けた数字になっているが、
比率自体の合計が 100% を超えているので、各言語ごとの「人数」
を全部足すと、57.6 万人を超えている。
しかし、日本のITエンジニア全体の人口は 144 万人で、
144 / 57.6 = 2.5 であることから、実際の各言語後との「人数」は、
2.5 倍する必要がある、ということになる。
290デフォルトの名無しさん (アウアウウー Sadd-MJCJ)
垢版 |
2025/06/14(土) 18:57:21.60ID:Z47ni+e7a
最近のプログラマは割り算はおろか掛け算も出来ないらしい
291デフォルトの名無しさん (ワッチョイ 136e-ZZSa)
垢版 |
2025/06/14(土) 19:20:56.16ID:TLqczxub0
mRNAワクチンの“新たな懸念”接種済み妊婦の子どもに「異常タンパク質構造」血中で確認★2 [Gecko★]
2025/06/14(土) 15:48:24.59
https://asahi.5ch.net/test/read.cgi/newsplus/1749883704/
・ワクチン問題になっている
2025/06/14(土) 19:34:05.95ID:8e4YyHKjM
>>290
いまの議論で、そんな人は誰もいなかったんだが。
2025/06/14(土) 21:54:18.62ID:k1IJmlZ/0
Teratail とか Qiita とか Stackoverflow とかの質問も減ってる気がするなぁ。
これは C++ の衰退のせい?
それともみんな ChatGPT とか Gemini に聞いてんの?
2025/06/14(土) 23:01:15.38ID:suk2ABkrM
>>293
>Teratail とか Qiita とか Stackoverflow とかの質問も減ってる気がするなぁ。
それはどうやったら体感できるの?
295デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/15(日) 00:11:57.49ID:bHsxd1q/H
C++の知識というか、ノウハウが一応行きわたっているからだと
思う。と言っても新人は習得に手こずるだろうけど、そばに適切
に指導してくれる先輩がいれば大丈夫。あくまで適切な指導をして
くれる先輩だけど。ラーメン屋の店主みたいな奴だと地獄。
296デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/15(日) 00:11:58.07ID:bHsxd1q/H
C++の知識というか、ノウハウが一応行きわたっているからだと
思う。と言っても新人は習得に手こずるだろうけど、そばに適切
に指導してくれる先輩がいれば大丈夫。あくまで適切な指導をして
くれる先輩だけど。ラーメン屋の店主みたいな奴だと地獄。
297デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/15(日) 00:12:31.42ID:bHsxd1q/H
ありゃあ、2つ入力されちまったい
298デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/15(日) 00:37:51.57ID:bHsxd1q/H
>>290
いまどき8bitシフトするために256で割る意味がわかる人いるかなあ
2025/06/15(日) 01:26:12.38ID:eDpwS0UO0
>>296
日本のソフトウェアIT業界なんてラーメン屋レベルでしょ

だからIT後進国でしょ
2025/06/15(日) 03:09:45.52ID:4MduE0B70
海外のラーメン屋はもっとレベル高いんか
2025/06/15(日) 08:13:33.37ID:vQtYxwCW0
国語力w
2025/06/15(日) 09:32:37.19ID:sxaow1g9M
地方の求人情報だと
java,c,c++.javascript,typescript位の求人しかない(昔はこれにVB,COBOLが加わってた)
c++書いてる人のレベルってどのくらいなのかはわからない
2025/06/15(日) 16:27:00.41ID:eDpwS0UO0
そういえば、&&の代わりにand使えるのか

C#とPythonとVBAとJaveとごっちゃになるわ…
2025/06/15(日) 17:15:44.30ID:mr/FUyDi0
代替表現は文字コードの都合で一部の記号がない場合のために入れたそうたけど、今となってはあまり意味がないな。
! が視覚的に目立たないから not だけは使うこともちょっとある。
2025/06/15(日) 17:42:56.06ID:dmfL2H8C0
>>303
それはない
2025/06/15(日) 18:14:03.61ID:DIvPIJxI0
>>298
整数除算よりバレルシフタの方が早いので、8ビットシフトなら素直にシフトしたほうがソースコードの意味がわかりやすい。
最近のコンパイラは賢いので256で割ってもシフト命令にされてしまうだろうが。
307デフォルトの名無しさん (ワッチョイ b219-m2eM)
垢版 |
2025/06/15(日) 18:47:36.40ID:PKcOFo6K0
最近ってどういう意味で言ってんのか知らんが、定数畳み込みなんかどの言語も相当古くからやってるよ?
Fortranなんかだと手動アセンブリより遅かったら市場に受け入れられないという事情があったから最初期から最適化が一番の課題だったって聞いた
逆に現代のMPUはビット演算と整数演算じゃ速度差がそれほど出ないので、どっちで書いてもコンパイラがパフォーマンス見てどっちかを吐くようになってるよ
2025/06/15(日) 18:49:13.93ID:ltc4eKLE0
and,or,notは基本使うようにしてる
2025/06/15(日) 19:14:47.28ID:eDpwS0UO0
>>304
!IsWindowVisible()とかは、
notのほうがいいね

色も見やすい
2025/06/15(日) 19:49:42.63ID:DIvPIJxI0
>>307
バレルシフタと整数除算ではクロックが10倍ぐらい違う
シフタが使える時にはシフタに最適化されるはず
2025/06/15(日) 20:18:51.49ID:mr/FUyDi0
ビットシフトが lea に置き換えられることがあるみたいで、命令長が長くなるだけでも結構な不利だと思うんだけどなんか良い効果があるんかね?
2025/06/15(日) 20:20:28.86ID:gRGFgZ6wM
>>311
lea だと、5倍とかも可能 :
lea rax,[rax+rax*4]
2025/06/15(日) 21:11:15.18ID:r3H8nvWy0
>>311
あとleaはフラグを更新しないから比較と分岐の間に入れてパイプラインを最適化するとか
2025/06/16(月) 16:06:36.68ID:2FW5D4OCM
>>313
そういう最適化は、アセンブラ名手の人間にとっては出来る事だけど、
コンパイラの最適化層でやっているコンパイラは限られるだろうね、
知らんけど。
315デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/16(月) 23:49:02.72ID:m+kaKcwWH
std::formatなるものがC++20規格からあるんですねえ。
これで工学表示したときの鬱陶しい+記号を空白にできる。
しかし、fortranに似ているなあ
316デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/16(月) 23:59:33.02ID:m+kaKcwWH
いやpythonか?
2025/06/17(火) 10:06:16.94ID:nCRyYLZZ0
似ているというならどういう点がどういう意味で似ているのか述べないと意味ないよ。
2025/06/17(火) 10:52:21.85ID:zrrGfpYo0
スルーできないはちみつ
319デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/17(火) 10:55:56.73ID:66zQf9l5H
昔のfortran77
write(6,100)
100 format(1h , 5x, G14.7, ...)
のformat文を連想しただけ。

str.formatにも似ているし,C#の要素も取り入れている。
320デフォルトの名無しさん (ワッチョイ 121e-jgBs)
垢版 |
2025/06/17(火) 10:56:25.37ID:2N3jqjoy0
あなたが落したのは、このスルー出来ないはちみつですか?
こっちのスルー出来ないはちみつですか?
って逸話を思い出した
2025/06/17(火) 11:13:00.43ID:4NySVCEQ0
ファイナルをクローズした時にエラーとなるのですが、これは正しいのでしょうか。
やはり、クローズはデストラクタに任せた方がいいのでしょうか。

#include <iostream>
#include <fstream>
int main() {
constexpr auto path = "tmp.txt";//なんでもいいです
std::ifstream ifs(path);
if(ifs.fail()){
std::cerr << "File open error: " << path << std::endl;
return -1;
}
std::string buf;
while(std::getline(ifs, buf))
std::cout << buf << std::endl;
ifs.close(); //←これ
if(ifs.fail()){
std::cerr << "File close error: " << path << std::endl;
return -1;
}
return 0;
}
2025/06/17(火) 11:27:27.12ID:2aAnRxo/0
>>321
ifs.close()前にifs.fail()は真を返す

#include <iostream>
#include <fstream>
int main() {
constexpr auto path = "tmp.txt";//なんでもいいです
std::ifstream ifs(path);
if(ifs.fail()){
std::cerr << "File open error: " << path << std::endl;
return -1;
}
std::string buf;
std::cout << "0: " << ifs.fail() << '\n';
while(std::getline(ifs, buf))
std::cout << buf << std::endl;
std::cout << "1: " << ifs.fail() << '\n';
ifs.close(); //←これ
std::cout << "2: " << ifs.fail() << '\n';
if(ifs.fail()){
std::cerr << "File close error: " << path << std::endl;
return -1;
}
return 0;
}
2025/06/17(火) 11:41:50.14ID:nCRyYLZZ0
std::format の文法の参考にしていると提案文に挙げられているのは Python、 .NET系、Rust のみっつ。
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html#Syntax

コンパイル時計算のメカニズムとの類似性を考慮すると Rust に特に近いと思うが、記法としては Python の影響も強いように見えるかも。
2025/06/17(火) 11:45:37.82ID:TpERKz9s0
>>321
close()したからではなくwhile(std::getline(ifs, buf))でeofになるまで読んだからfailになってる
2025/06/17(火) 12:02:37.80ID:nCRyYLZZ0
>>321
実際に入出力するための機能はストリームバッファと呼ばれるオブジェクトが担当していて、ストリームがストリームバッファを所有する構造になっている。
ストリームが close するとストリームバッファの close が呼ばれて、それが nullptr を返した場合 (クローズに失敗した場合) に setstate(failbit) が呼ばれる。
https://timsong-cpp.github.io/cppwp/n3337/ifstream.members#5
つまり、クローズの失敗によってもフェイルビットが立つことはありうる。

クローズによらない失敗 (フェイルビットを立てる原因) と区別がつかなくなるのでエラーに対処したいならクローズ前後の両方でチェックしないといけないと思う。

デストラクタでクローズするとクローズの失敗に対処する機会がなくなるので明示的にクローズしたほうが良いという人はいる。
ただ、しっかりしたホスト環境の上で動くアプリケーションでクローズが失敗するような状況を心配する意味があるかというと……まああんまりない。
2025/06/17(火) 12:43:21.70ID:4NySVCEQ0
>>322,324,325
ありがとうございました。勉強になります。
ProgramminPlacePlus でのサンプルを元にしました。

なーる真面目にやるなら閉じる前後で色々とやらんといかんのですね。

今までは
readdata=string((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>());
の感じで、一気にファイル内容をstrigに取り込むような場合は、もう読み込みは無いのですぐに
ifs.close()してました。

デストラクタに任せてもいいのですが、今後も使わなくなったら、即close()したいと思います。
そんなにシビアにならんでもいいようですし・・・mOm
327デフォルトの名無しさん (スップ Sdb2-xekI)
垢版 |
2025/06/18(水) 12:20:43.59ID:tHURl6jRd
プログラム作成は生成AIに持っていかれそうなことを考えると、
コードを書く力よりも、誰かが書いたコードを読み解く力の方が、
この先いきのこれそうな希ガスるンゴ
2025/06/18(水) 13:59:41.64ID:7Ghn3yO50
読み解くのこそAIに勝てないから
329デフォルトの名無しさん (ワッチョイ 5963-LWzS)
垢版 |
2025/06/18(水) 15:17:51.63ID:xKxMFSMx0
コメントのないソースコードから設計意図を読み取るのって難しいよね
AIでそこまでできるのかな?
コードの逐次解釈のようなことは当然できるだろうけども
2025/06/18(水) 15:32:01.08ID:lPJmZhm/M
自然言語に比べたら屁みたいなもんだよ
2025/06/18(水) 15:35:59.98ID:flRjm2Y20
コメントは嘘を書いてもコンパイルエラーにならないからな
コメントがなくても自然と設計意図が読み取れるコードこそ望ましい
332デフォルトの名無しさん (ワッチョイ b2f9-QhKk)
垢版 |
2025/06/18(水) 16:03:36.24ID:Kdic6Khn0
入力に対して出力が出る
それが間違いでなければ中身なんてどうでもいい

何億通りもの入力を与えて出力がどうなるかを調べるのもAIが得意
そうして、それを元に同じことを返すプログラムを一から最適に作り直すのもAIが得意だろう

windowsもそれやれば1/10のコードで収まりそう
2025/06/18(水) 16:06:21.59ID:lPJmZhm/M
APIやライブラリ系は無駄の極致だから将来的には無くなるだろうね
334デフォルトの名無しさん (ワッチョイ 794b-jgBs)
垢版 |
2025/06/18(水) 17:42:24.62ID:SrJIdorw0
世界最長のコンテキストウィンドウ100万トークン入力・8万トークン出力対応にもかかわらずたった7800万円でトレーニングされたAIモデル「MiniMax-M1」がオープンソースで公開され誰でもダウンロード可能に
2025年06月18日 11時43分
https://gigazine.net/news/20250618-minimax-m1-open-source/
>>MiniMax-M1は、合計4560億のパラメーターが含まれており、トークンごとに459億のパラメーターがアクティブになるとのこと。これはDeepSeek R1の8倍に相当するコンテキストウィンドウです
>>以下のグラフは競技レベルの数学、コーディング、ソフトウェアエンジニアリング、エージェントツールの使用、長文理解タスクにおけるパフォーマンスを主要な商用AIモデルと比較したもの。赤色がMiniMax-M1で、どのタスクにおいても競合AIモデルに匹敵するパフォーマンスを発揮できている
>>MiiniMax-M1はいくつかのベンチマーク、特に長いコンテキスト駆動のベンチマークでClaude Opus 4のパフォーマンスを上回りました」と報告
※AIを動作させている動画あり
↓上記のAIお下記をプレイさせれば性能が判明する
Gemini 2.5 Proは手持ちのポケモンが瀕死になるとパニックに陥る
2025年06月18日 12時30分
https://gigazine.net/news/20250618-pokemon-gemini-panic/

[プロテクトガードやセキュリティーホール発見可能]
※1 プログラムのバグ技[裏抜け道]を使用できる=チートコードを発見可能
・ マリオカートのショートカットはプレイヤー「極悪人」の表の抜け道でNPC「一般人」は使用不可能
[インサイダー/談合/なねーロンダリング/霊感商法など行う時の悪行で音波や電波をしての悪行の方法を発見可能
※ 政治家の法律上の抜け道を仕込める=ある業種だけの法律の抜け道を発見可能
[一般大衆の思考である特定の極悪人から目線を特定の統合失調症へ返させる装置]
※ AIは正確な情報で人間を信用させれる=AIは嘘の情報を一部混ぜて人間を洗脳できる
335デフォルトの名無しさん (アウアウウー Sacd-dpHj)
垢版 |
2025/06/18(水) 19:19:48.46ID:gOtZ0Zwca
>>331
C++のスレッドでそんなこと言うのか
コードでもコンパイルエラーにならない嘘(バグ)が山程あるのに
2025/06/18(水) 19:27:43.48ID:AeXwuQQu0
コメントがなくても意図が読み取れるのが「望ましい」のは確かにそう。
不可能だけど。
2025/06/18(水) 19:29:35.44ID:CAd2i/c2M
>>336
コメントなしで理解するのは、めっちゃ効率が悪いな。
2025/06/18(水) 19:31:31.04ID:flRjm2Y20
>>335
少なくとも委員会の奴らはそう思ってるよ
static_assertだのコンセプトだのcontractだのが追加されてきてるわけで
2025/06/18(水) 20:52:21.50ID:/olvjAo90
マルチスレッドのDead Lockすら指摘してくれる
これはどういう仕組みなんだろう...
2025/06/19(木) 00:56:42.59ID:YDIRlT8gM
>>338
C++委員会って、無能集団だけどね。
2025/06/19(木) 03:37:07.68ID:ytoOjILn0
あの複雑怪奇な仕様をまとめるのは無能じゃ無理
労力に進化が見合ってないけどな
2025/06/19(木) 03:38:19.15ID:ytoOjILn0
>>339
明らかなDeadlockの検知は簡単でしょ
これ説明いる?
2025/06/19(木) 12:36:13.20ID:WACntaUb0
>>342
コンパイラは検知できんのに?
2025/06/19(木) 13:43:01.15ID:ytoOjILn0
>>343
は?
コンパイラが全能って前提どっからきてんの?
サニタイザがあるだろ
お前みたいなレベルがc++使ってるとかありえんわ
2025/06/19(木) 13:52:14.72ID:nNn4PbNI0
サニタイザは起こった問題を検出するもので、起こる可能性を指摘してはくれない。
2025/06/19(木) 14:04:16.80ID:ytoOjILn0
しったなすんなジジイ
347デフォルトの名無しさん (ブーイモ MMb2-A4wY)
垢版 |
2025/06/19(木) 14:05:21.52ID:rpR9krtTM
>>344
コンパイラが全能って誰が主張したの?
2025/06/19(木) 16:32:08.79ID:FdruriMM0
「できんのに」って「できないのに」と「できるのに」のどっちの意味にも取れるからそのせいかな
くだらね
349デフォルトの名無しさん (ブーイモ MMb2-A4wY)
垢版 |
2025/06/19(木) 16:43:21.25ID:8s/NXxtqM
>>348
「できんのに」は「できるのに」には読めない
デッドロックをコンパイラが検出出来ないにも関わらず
LLMは必ずではないと思うが検出出来る
LLMがどうデッドロックを検出しているかは
面白いと思うよ
350デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 17:27:01.33ID:VOj0rD3dH
>>315
と思ったら、vs2022は未対応かorz。
C++20対応と言ってるくせに。プロジェクトでclang
に切り替えられるが、これも未対応。一体、いつの
clangなんだよ
351デフォルトの名無しさん (ワッチョイ f64f-QhKk)
垢版 |
2025/06/19(木) 17:32:40.31ID:EI1CbiFh0
やればできんのに
352デフォルトの名無しさん (ワッチョイ f64f-QhKk)
垢版 |
2025/06/19(木) 17:32:55.29ID:EI1CbiFh0
やってもできんのに
2025/06/19(木) 18:04:24.77ID:JAVz0tMa0
>>350
https://fmt.dev/
2025/06/19(木) 18:07:11.09ID:sZaRUqQbM
"{:d}"
355デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 18:11:23.49ID:VOj0rD3dH
いやMinGWじゃコンパイル実行できてるから。
日本マクロソフトだけ対応遅れてると?
356デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 18:13:20.06ID:VOj0rD3dH
>>353
>>354
そんな下らんレスする前に自分で実際にやってみろよ。
357デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 18:16:13.42ID:VOj0rD3dH
日本マクロソフト→日本マイクロソフト
2025/06/19(木) 18:16:54.55ID:sZaRUqQbM
確かにくだらないわな

そのサイトで"{:d}"が可愛く見えたから張っただけなんだから
janeだと全くかわいくない
2025/06/19(木) 18:18:35.94ID:sZaRUqQbM
にしてもまだorz使ってる人がいるんだな
こちらの方が新鮮だ
360デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 18:21:05.14ID:VOj0rD3dH
そう、ありがとう
2025/06/19(木) 18:23:03.57ID:sZaRUqQbM
もともとfmtと言うライブラリがあってそれが標準のC++の仕様に取り込まれた
どうしても使いたいならfmt使えばいいよということだと思う

他人に噛みつく前に調べたら良いと思うけど
362デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 18:26:00.99ID:VOj0rD3dH
std::formatだぞ。お前馬鹿か

さあ暴れるぞ!
2025/06/19(木) 18:29:34.15ID:sZaRUqQbM
結局日本語が理解できない人だったと言う話か
364デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 18:30:56.19ID:VOj0rD3dH
ふぁぁ
2025/06/19(木) 18:43:47.61ID:sZaRUqQbM
文章の雰囲気から50代~60代ぐらいのホビー系の人かな
人生の先輩お疲れ様です
2025/06/19(木) 18:56:35.62ID:oyTCj2/DM
>>341
>あの複雑怪奇な仕様をまとめるのは無能じゃ無理
あのDraftの質の悪さはなんだ。
ちゃんと理解できてない人が書いているに違いない。
2025/06/19(木) 19:34:35.26ID:sZaRUqQbM
> なんだ。
> 違いない。

文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな
2025/06/19(木) 20:14:57.20ID:nNn4PbNI0
現代的にはカジュアルな場面では句点をつけないのが主流。
語彙より顕著に年代が表れる。
2025/06/19(木) 20:23:04.02ID:sZaRUqQbM
句点もそうだけどやはり語彙や用法だと思う

chatGPT
その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。

言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく
伝わるのが興味深いです。
2025/06/19(木) 20:24:10.13ID:sZaRUqQbM
もし若者が同じことを言うならどう書くか
たとえばこんな風に言いそうです:



あのDraft、ちょっと内容雑じゃない?

書いた人ちゃんと分かってなさそう…
371デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/19(木) 20:27:45.86ID:VOj0rD3dH
オコタ大魔神、はにわ顔に戻る
2025/06/19(木) 20:34:02.38ID:sZaRUqQbM
大魔神(1966年)
仮に1966年に6才だとして今は65歳ぐらいかなあ???
2025/06/19(木) 20:36:28.06ID:nNn4PbNI0
アカデミアでは語彙が古いのは普通のことだよ。
参照する資料が古いから。
情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。
2025/06/19(木) 20:45:06.19ID:sZaRUqQbM
「怒っている年配の男性の声」をにじませる演技派
2025/06/19(木) 20:50:34.90ID:Cdln7j8I0
整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど
この計算が最適化とかで除かれない保証ってあるの
2025/06/19(木) 20:53:44.24ID:nNn4PbNI0
ChatGPT を根拠 (参考資料?) に出すのはあまり意味がないぞ。
それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。
ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。
2025/06/19(木) 20:57:52.06ID:nNn4PbNI0
>>375
C++ の言語仕様は抽象機械の動作として記述されている。
動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。
結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。
しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。
2025/06/19(木) 21:05:34.31ID:oyTCj2/DM
>>375
最適化では結果は変わらない。
つまり、ちゃんと10で割って、ちゃんと10を掛ける。
10を掛ける方は、マシン語の乗算命令は使われず、
もっと速い命令に置き換えられることが有るが、結果は同じ。
2025/06/19(木) 21:11:49.89ID:nNn4PbNI0
処理系は抽象機械の動作を正確にエミュレートする必要はなく、観測可能な動作のみをエミュレートすればよい。
https://timsong-cpp.github.io/cppwp/n3337/intro.execution#1
だから観測されない動作は削除してもよいというか、削除されることはある。
たとえばその計算結果が全く使われないような状況とか。

ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。
2025/06/19(木) 21:16:20.06ID:sZaRUqQbM
セキュリティの問題で普通にゼロクリアした場合でも最適化で削られたりとか昔は問題になったけど…
知らないといけないことは多岐にわたる
381デフォルトの名無しさん (スッップ Sdb2-T1jw)
垢版 |
2025/06/19(木) 22:14:21.23ID:JQ4jFr2Sd
>>375
それだと取り除けるケースがあるので保証はされない
2025/06/19(木) 23:09:11.10ID:oyTCj2/DM
>>381
いや、そんなことない。
最適化では結果は変わらない事が保証される。
2025/06/19(木) 23:15:31.49ID:IWPeLhU+0
>>375
あるわけないでしょ
そういう仕様なんだから
2025/06/19(木) 23:25:09.71ID:sZaRUqQbM
意味があるにも関わらず意味がないと判断されると削られる
その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話
2025/06/19(木) 23:29:59.97ID:oyTCj2/DM
>>384
いや、今回の割って掛ける場合、そういう事は起きない。
2025/06/19(木) 23:34:50.70ID:sZaRUqQbM
ここの部分はそうだけど
コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと
2025/06/19(木) 23:37:52.48ID:oyTCj2/DM
>>386
仕様に明確に書いてあることの動作は変わらない。
388デフォルトの名無しさん (ワッチョイ 1279-T1jw)
垢版 |
2025/06/20(金) 01:42:50.79ID:iLwGFTtd0
>>382
そら結果は同じよ
結果が違っちゃまずいだろうよw
演算をやらない可能性があるってこと
389デフォルトの名無しさん (ワッチョイ 1279-T1jw)
垢版 |
2025/06/20(金) 01:44:00.77ID:iLwGFTtd0
質問じゃ曖昧だけど副作用完了点が間にない場合の話なら、な
2025/06/20(金) 01:58:37.52ID:t+D0H6HX0
>>388
どういうこと?
演算しないと結果は出ないのに、演算せずにどうやって結果だすの?
2025/06/20(金) 08:38:29.48ID:eaqG1YUh0
実行するプログラムではなくてコンパイラが計算までしてしまう
たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある
出力結果だけは同じだけど、そのコードは大きく変更されてしまう
392デフォルトの名無しさん (ワッチョイ 0175-Is3k)
垢版 |
2025/06/20(金) 09:01:01.71ID:BxPKXrVj0
>>390
変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね
だから実行時ではなくコンパイルの時点で演算した結果を使う
初歩の最適化の一つ

元の式については左辺に変数が入ってくるから多分最適化はされない
a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に
a=b/10
c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う
a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される

この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ
2025/06/20(金) 09:03:31.40ID:LoawS5uh0
変数があっても結果が同じ計算式で置き換えられるならそうしてくる
10倍よりも8倍+2倍のほうが速い、とかで
2025/06/20(金) 10:35:00.76ID:YK1FsnCb0
最適化のロジックを作るのはまだプログラマーでしょうから。
値を10倍してから10で割るというプログラムを
何もしないに変更するのありかな。
でもわざと桁あふれをさせたい場合もある?!
395デフォルトの名無しさん (ワッチョイ 0175-Is3k)
垢版 |
2025/06/20(金) 10:40:47.81ID:BxPKXrVj0
昔は最適化でバグ混入させられることもあって、最適化は切れってされてたなぁ、っていうおっちゃんのつぶやき
2025/06/20(金) 10:45:39.27ID:4xHX9xY70
>>392
ここまでの話で「定数だけの演算なら」と何で言い出すのか理解できないけど
>>375では「整数型の変数を」と言っているわけだし
まあそれはおいておいても「コンパイルの時点で計算しても」←演算してんじゃんって俺は思うわけ

>>393
それ自体は問題なくね?
157 を 10で割って15
これに10を掛けるのでなく15*8+15+2 でも最適化の影響はないだろ?
割り算の方でそれが起きるなら問題だけど、>>378の人の話では起きないようだけど
2025/06/20(金) 11:14:53.80ID:xCnXC/Iza
>>396
これ観たら発狂するんじゃね
https://qiita.com/HexagramNM/items/6ca6900b8df37a9b59b8
https://qiita.com/manjuu_eater/items/2e9e38eb001e4b90145b
https://qiita.com/hiramax/items/add36c4fe38900f7175d
398デフォルトの名無しさん (ワッチョイ 0175-Is3k)
垢版 |
2025/06/20(金) 11:57:23.05ID:BxPKXrVj0
>>396
コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う
392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない
2025/06/20(金) 12:39:35.73ID:4fYw50h40
定数はいつ計算しても同じ結果なんだから最適化されるよ
400デフォルトの名無しさん (ワッチョイ 59c9-LWzS)
垢版 |
2025/06/20(金) 12:50:40.34ID:yZt3hnAQ0
-O3だとプログラムが動かなくなるから使っていいのは -O2までって先輩に言われてた
2025/06/20(金) 12:53:23.61ID:y+CeF2upM
何故最適化レベルをワザワザ選べるようにしているのか?
完璧なら選ぶ必要はない
理想論には興味ないから語りたいなら具体的な問題点を上げていけ
402デフォルトの名無しさん (アウアウウー Sacd-xHx3)
垢版 |
2025/06/20(金) 13:06:46.75ID:xCnXC/Iza
>>400
それは言われてたのは知ってるが
「-O3だとプログラムが動かなくなる」のは未定義踏んでるからじゃないか
403デフォルトの名無しさん (ワッチョイ 6e9d-x4hs)
垢版 |
2025/06/20(金) 13:28:04.40ID:H6JOW3Vp0
モバイルc消えてるんだけどなんで?
404デフォルトの名無しさん (ワッチョイ e908-x4hs)
垢版 |
2025/06/20(金) 13:42:00.01ID:JPiEW2yh0
>>403
あれ便利やった
なんで消されたんやろ
405デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/20(金) 17:27:19.07ID:yQfQLmUOH
std::formatの件だが、Visual Studio 2022のコンパイラ設定が
デフォルトでC++14標準になってた。すまん。
2025/06/20(金) 18:21:03.44ID:4xHX9xY70
>>398
そんなことは知ってるのさ
「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど
最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ?

375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの
381 それだと取り除けるケースがあるので保証はされない
382 いや、そんなことない。最適化では結果は変わらない事が保証される。
388 (略)〜演算をやらない可能性があるってこと

この流れじゃ『整数型の変数(実行時に結果が変わる)の場合でも最適化によって「演算をやらない可能性がある」』ってニュアンスになっているって気づかんの?
それに対してのどういう状況だ?という>>390だよ
まあ言いたいことは分かったから別にいいけどさ
2025/06/20(金) 19:12:09.11ID:ykKOKnwYM
>>406
回答者にも正しいことを言っている人と間違っていることを言っている人が
いるというだけ。
正しいのは、仕様に明示されている動作については、
最適化してもしなくても結果が変わらないという事だ。
なぜなら、それが仕様なのだから。
2025/06/20(金) 19:41:18.21ID:3ZuChe0s0
>>407
大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。
2025/06/20(金) 20:44:54.01ID:ykKOKnwYM
保証されます。
410デフォルトの名無しさん (ワッチョイ b235-m2eM)
垢版 |
2025/06/20(金) 21:00:28.00ID:M1o0ztly0
コンパイル時に値が決まるようなら実行時に演算されない
そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある
それ以外なら最適化されない
2025/06/20(金) 21:06:32.84ID:80Iion+LM
いずれにせよ結果を使わないなら最適化で丸々消される
412デフォルトの名無しさん (ワッチョイ 0175-Is3k)
垢版 |
2025/06/20(金) 21:12:56.63ID:BxPKXrVj0
>>409
ただしバグがなければ
2025/06/20(金) 21:18:29.51ID:80Iion+LM
最適化の時点でコードが消されるので直に0で除算をするとコンパイルエラー

変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない
もちろんconstにしててもコンパイルエラー
2025/06/20(金) 21:43:49.77ID:ykKOKnwYM
>>412
それは、ユーザープログラムのバグではなく、コンパイラのバグだ。
コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと
括弧の組み合わせた結果は、最適化しても変わらない。
0除算に関しては話が別。
2025/06/20(金) 21:48:47.56ID:ykKOKnwYM
最適化されて変わる可能性があるのは、今思い出せるのは、
・初期化してない変数の中身
・変数のアドレス
・結果を利用せず、副作用も伴わない式の存在。
整数に対する四則演算を含めた「計算」は、仕様が決められているので、
同じコンパイラと同じターゲット(OS、環境)だと最適化しても
結果は変わらない。
浮動小数点に対する計算は誤差の範囲で結果が変化する可能性はある。
2025/06/20(金) 22:25:10.37ID:ykKOKnwYM
>>415
1. 整数の計算途中に「桁あふれ」が起きる場合はこの限りではないかも知れない。
 例えば、整数型 a に対して、a * 100 / 5 は、a * 20 と最適化できる
 可能性がある。しかし a がとても大きい場合には結果は同じにはならない可能性がある。このことに
 関して仕様がどうなっているかは知らない。
2. 浮動小数点型の変数 a に対して、(a * 100.0) / 5.0 は、
 a * 20.0 と最適化できる可能性があるが、浮動小数点型には計算誤差があるので、
 誤差の範囲内で異なる結果になる可能性があるかもしれない。
 これに対して仕様上、最適化していいかどうか走らない。
3. しかし、整数型
417デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
垢版 |
2025/06/20(金) 22:25:52.67ID:ykKOKnwYM
>>416
3. しかし、整数型変数 a に対して、(a / 100) * 100 は、
 明らかに
2025/06/20(金) 22:26:34.77ID:ykKOKnwYM
>>416
3. しかし、整数型変数 a に対して、(a / 100) * 100 は、
 明らかに a とは、結果が異なる。だから a と最適化される事は無い。
419デフォルトの名無しさん (ワッチョイ 1279-T1jw)
垢版 |
2025/06/21(土) 01:51:51.86ID:bIqfBqmB0
キミは色々と勘違いをしているからこの手の話をしたいならもうちょい勉強しよう
aが何だろうがa*100/5をa*20とはそもそも出来ないし、2.も同様
3.もaの値によっては演算の前後で値がおなじケースがある
色々あるのでいちいち書かなかったが、例えばaが10の倍数の時、aの絶対値が9以下の時、またaが列挙型だったり配列の添字だったりする時は挙動が推測出来るケースも出てくる
他にも最適化で実行時の演算をしなくてすむケースがある
演算をしなくてもaの値を変えることは出来うるし、その場合除算の代わりにいくつかの分岐や直値に変わるだろう
420デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 02:46:24.26ID:myS4seE9H
また空気読めない書き込みする。ずっと議論
が続いているけど興味ない。

そもそも実数データを表現するbit数が有限
なんだけど(doubleで8byte=64bit)、そりゃあ
場合によっては結果が違うが、実数の場合は
それほど問題じゃない。誤差の範囲内。

整数演算の方が問題。
i=32767/10000*10000の演算やったらどう
なるか?これはコンパイラの最適化の問題
じゃなくてプログラムする人が気をつける
べきことだと思う。というか、変な最適化
はしない方がいいと思う。最適化しなくても
現在のコンピュータ能力じゃあ大して時間差
は問題にならん。

それよりも行列演算でNRVOを実装してほしい。
gccの一部では実装されているみたいだけど。
421デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 02:49:22.52ID:myS4seE9H
あ、言い忘れた。演算子のオーバーロードでの話ね。
2025/06/21(土) 06:20:55.55ID:mM+iEPSf0
>>413
0除算は未定義動作だから、(0除算については)最適化されてエラーが出なくてもC++規格通りかね。
423デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 08:07:57.88ID:myS4seE9H
浮動小数点演算で問題になるのは情報落ち(桁落ち)。
expを指数関数としてexp(x)+exp(-x)でxの絶対値が
大きくなるとどうなるか?4倍精度演算が標準として
ほしい。fortranには昔からある。たしか南米の人が
C++で4倍精度演算ライブラリ作ってた気がする。
424デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 08:14:50.36ID:myS4seE9H
ところで、前から気になってたけど何でワイだけ
ワッチョイ出ないんだろ。メール設定ミス?それとも
プロバイダの問題?目立つから困る。
2025/06/21(土) 09:45:45.70ID:cFB8HkI30
signedのオーバーフローは未定義だがunsignedのオーバーフローは定義されてる
あとC/C++はfenvで浮動小数点コプロセッサのモードを切り替えられるから、それを使うつもりのコードはコンパイル時に計算されると狂ったりはする
2025/06/21(土) 11:27:06.14ID:fGhLJfIJa
>>424
ワッチョイと同じ役割を持つ名前一覧
1) オイコラミネオ
2) ササクッテロ
3) オッペケ
4) エムゾネ
5) スプー・スプッ

JPは知らん
2025/06/21(土) 11:46:04.84ID:pKk6RtsPM
>>419
あなたは馬鹿。
数学的センスが無いので、勉強しても直らないだろう。
428デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 12:00:57.87ID:myS4seE9H
>>426
レスありがとう。プロバイダが関係してるのかな
429デフォルトの名無しさん (アウアウウー Sacd-dpHj)
垢版 |
2025/06/21(土) 13:55:21.38ID:xPq+xj/ja
>>424
VPNでも使ってるんだろ
430デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 14:01:54.99ID:myS4seE9H
VPNオンだと5chが書き込み拒否する。まあ、いいか。
2025/06/21(土) 15:02:17.15ID:S2983oYI0
>>424
出てるじゃん JPって
大方逆引き不可なホストだろうからプロバイダの問題ではある
マイナーすぎて細かく設定してないだけかも知れないけど
432デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 15:34:31.30ID:myS4seE9H
>>431
レスありがとうございます。本スレの趣旨に合わないので
以後の返事は控えさせていただきます。
2025/06/21(土) 16:15:28.70ID:kXnmGuVNM
先の話題について、コンピュータではなく数学の世界まで振り返って考えてみると、
(1) a が実数の時
a * 100 / 100 = a
は恒等的に成り立つ。だからこの最適化は、精度を無視すれば
していい可能性が高い。
(2) a が整数で、整数としての割り算で考える場合、
a * 100 / 100 = a
は、一般的には成り立たない。
だから、a * 100 / 100 を a と最適化することはそもそも出来ない。
2025/06/21(土) 16:16:35.17ID:kXnmGuVNM
>>433
重大な訂正。
(2)は正しくはこう :
(a / 100) * 100 = a
は、一般的には成り立たない。
だから、(a /100) * 100 を a と最適化することはそもそも出来ない。
435デフォルトの名無しさん (ワッチョイ b295-m2eM)
垢版 |
2025/06/21(土) 16:40:28.18ID:Kar31VLO0
分かったからもういいって
対人論証するようなのの意見は誰も聞かんよ
436デフォルトの名無しさん (ワッチョイ 6ef5-QhKk)
垢版 |
2025/06/21(土) 17:52:28.47ID:YF3X9a/V0
そりゃタダのコンパイラならかっこ付き計算の仕様に合わせて最適化しかできない
でもそれがAIがやるようになると、トータルで何やってるか把握して最適化するようになるから
無駄な計算は省かれるだろう
2025/06/21(土) 18:30:14.39ID:wcVxTOdx0
マジックナンバーだらけになりそうだな
2025/06/21(土) 18:49:30.35ID:9yAQ73mO0
日によって最適化の結果が変わりそうだな
2025/06/21(土) 19:00:56.65ID:kXnmGuVNM
浮動小数点数を「実数」と見た時に
『数学的な恒等式』ならば、最適化していい
という価値観は有るはずだ。
実際には、実数は無限精度であるのに対し、浮動小数点数は
有限精度であるから、実数では恒等式であっても、
浮動小数点数では恒等式ではないので、最適化すると結果が
少し変わってしまうことはありえる。
2025/06/21(土) 20:42:47.18ID:ea0qUnOa0
そんなのはまともなコンパイラはみんな分かってて-ffast-mathとかでやるかやらないか選べるけどそれが何?
441デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 21:24:08.46ID:myS4seE9H
すみません。次のコードで .5e のところの精度(少数部桁数)5
を変数precで設定したいんですけど、さっきからコンパイラに
駄目だし食らって遊ばれとります。わかる人いますか?
#include <iostream>
#include <cmath>
#include <format>

int main()
{
using namespace std;

double x, y, dx=0.5;
unsigned prec =4;

for (int i = 0; i < 20; ++i)
{
x = i * dx;
y = sin(x);
cout << format("{: .5e} {: .5e}", x, y) << endl;
}

cin.get();
return 0;
}
442デフォルトの名無しさん (JP 0H46-E6Ax)
垢版 |
2025/06/21(土) 21:35:25.24ID:myS4seE9H
cout << format("{0: .{2}e} {1: .{2}e}", x, y, prec) << endl;
で解決しました。
2025/06/21(土) 22:20:34.53ID:07kyc98IM
>>440
https://kristerw.github.io/2021/10/19/fast-math/
ここには、「-fassociative-math」が今回の例に近いようだが、
同じものは載ってないと思うが。
以下は、近いが、今回のものとはまた違う :
(C1 / X) * C2

(C1 * C2) / X
444デフォルトの名無しさん (ワッチョイ c54b-jK4x)
垢版 |
2025/06/22(日) 12:29:48.51ID:4aXQSYOG0
・人間の思考「脳波」は頭蓋骨の外に漏れない
人間の脳は発光していた!「脳が放つ光」の観測に初成功
2025.06.19 12:00:38 THURSDAY
https://nazology.kusuguru.co.jp/archives/179808
>>カナダ・アルゴマ大学(Algoma University)の最新研究で、ついにこの「脳の光」を頭蓋骨の外から観測することに成功したのです。
>>UPEは細胞の代謝活動、特に酸化反応によって発生する副産物の一種です。
>>以来、UPEはあらゆる植物や動物の細胞からも確認されており、生体内の酸化ストレスや老化、さらにはがんの診断補助にも応用が期待されてきました。
>>脳は体の中で最も代謝が活発な臓器のひとつであり、神経活動に伴って活性酸素が多く発生します。
>>チームは今回、20人の健康な成人を対象に、特殊な装置を用いた実験を実施しました。
>>被験者は真っ暗な部屋に座り、頭には脳波計を装着。
>>その周囲には、光電子増倍管(PMT)と呼ばれる極微弱な光を検出する装置が配置されました。
>>そして被験者には、目を開ける/閉じる、あるいは音楽(120BPM)を聴くといったシンプルなタスクを行ってもらい、その間のUPEと脳波の変化を同時に測定したのです。
☆>>まず、脳からのUPEは背景光(周囲の空気中のノイズ)とは明確に異なる変動パターンを持つことが判明したのです。
>>とくに後頭部(視覚野)と側頭部(聴覚野)から検出された光は、安静時でも一定のリズムと変動性を示し、他の部位とは異なるスペクトル的特徴を持っていました。
>>さらに目を閉じたときに増える「アルファ波」と呼ばれる脳波の活動と、UPEの強さが同期していることも発見されました。
>>これはつまり、脳の電気的な信号(脳波)と、化学的な代謝反応(UPE)が連動していることを意味します。
>>この成果は、従来のfMRIやPETスキャンのような「重装備で高コスト」な装置を使わずとも、非侵襲・低刺激で脳機能の状態を“光”から読み取る可能性を示すものです。
>>研究者たちはこの新しい手法を「光脳波記録(photoencephalography)」と名付けました。
2025/06/22(日) 12:39:57.32ID:gKjr8htc0
光コンピューティングやないかい
2025/06/22(日) 17:00:05.82ID:CnBC1yms0
光というのは電磁波だったと思うが。
447デフォルトの名無しさん (ワッチョイ 3575-mUa+)
垢版 |
2025/06/22(日) 17:03:00.89ID:ZWGsAnaU0
ニュータイプ近づいたな
2025/06/22(日) 18:48:20.68ID:/yOBM7d0d
スレ違い。
2025/06/22(日) 19:08:02.78ID:x4CLaAtVM
>>444
みたいな書き込み、完全にスレチ
このスレのみならず、板自体が壊れてしまう。
2025/06/23(月) 01:01:04.29ID:Gvg9upbV0
http://hissi.org/read.php/tech/20250622/NGFYUVNZT0cw.html
毎回こことPythonスレだけ荒らしてるアホ
2025/06/23(月) 01:12:15.09ID:Btl+IikW0
統失の間でもPythonとC++は認知されてるってことでしょ
名誉ですなぁ
2025/06/23(月) 14:29:01.81ID:zsxUyp330
C++でpythonのライブラリを作るのが気持ちいいかなみたいな。
ん? 普通はpythonのライブラリって何で書かれているんだろう。
2025/06/23(月) 16:02:13.08ID:n3O4Zcz+M
>>450
Rustスレにも投稿されてたで。
2025/06/24(火) 09:31:18.32ID:17zM306Da
pythonのモジュールはpythonでも描けるが
もちろんCでも描けるしC++でも描ける
最近はRustで描くのが楽で良い
455デフォルトの名無しさん (JP 0Hab-E2BB)
垢版 |
2025/06/24(火) 17:31:46.42ID:Sa2uRHN0H
Rustは良い言語かもしれんが、自分には
必要ない。
2025/06/24(火) 18:59:56.02ID:FRc1H2/gM
>>455
同意
2025/06/24(火) 19:19:29.25ID:8wBejQ5/0
>>454
なんで、AIはPythonで書かれるんだろうな

謎だな…
2025/06/24(火) 19:22:51.87ID:hfqdv+Ay0
Rustに静的ダックタイプ入ったら使うかどうか考える。
設計をカッチリできるプロジェクトでもなければRustはキツくない?

c++もコンセプト制約変数とか入らんかな。
変数レベルで静的ダックタイプにして、クラス継承は無くしたい。
2025/06/24(火) 19:44:21.82ID:s2rFPvAe0
C++26 にはリフレクションがようやく入る見込みで、これを使えばダックタイピングのような仕組みをライブラリで実現できる。
2025/06/24(火) 20:15:46.49ID:S1fYPTVc0
>>457
モジュールを書く人とAIを書く人が別だからじゃろ
2025/06/24(火) 20:45:25.03ID:s2rFPvAe0
AI の専門家がプログラミングの専門家というわけでもないしな。
2025/06/24(火) 20:49:18.38ID:8wBejQ5/0
>>460
というと?
2025/06/26(木) 02:55:12.43ID:v8FRsUWIM
NSCがC++を廃してRustを推しているのは、中国のUnrealEngineへの牽制か?
2025/06/26(木) 02:59:40.78ID:v8FRsUWIM
NSA だ。
2025/06/26(木) 03:19:10.72ID:P3qvmtvK0
>>463
unreal engineって、
中国が株主でしょ
2025/06/26(木) 07:43:46.78ID:NfgrBwV2p
UEはアメリカのゲーム企業が作ったものなんだが・・
2025/06/26(木) 12:38:45.11ID:deRGahNkM
スマン。中国が作ったものだとばかり思っていた。
2025/06/26(木) 12:41:11.49ID:3UJQKTFB0
ったく、こりだからよお
469デフォルトの名無しさん (ワッチョイ 23b7-S6wV)
垢版 |
2025/06/26(木) 17:13:34.04ID:zdpAcYpu0
悪意のあるVSCode拡張機能を検出できる「VSCan」
https://gigazine.net/news/20250625-vscan/
※上記の
本体プログラミング改造で改造コードを仕込む場所や攻撃ポイントを割り出せる
※緒繼Lと下記のプャ鴻Oラムでエラ=[コードをメモャ梶[^上に無いbゥを調べて別のャvログラムを走b轤ケるとエラーャRードから親友bナきるかが割り緒oせる
などいろいろと使用可能

AIを活用した完全自律型の侵入テストツール「XBOW」がHackerOneのランキングでついに人間を抜いて1位に
https://gigazine.net/news/20250625-hackerone-xbow/

上記のプログラムと電波障害などで生じたエラーなどでで無理やりセキュリティーほーホールを見つけれる
2025/06/26(木) 17:16:52.94ID:jAlq/lgY0
まず自分の書き込みにAI活用しろよって思った
471デフォルトの名無しさん (JP 0Hab-pT1b)
垢版 |
2025/06/26(木) 18:27:21.16ID:o/InY5NNH
472デフォルトの名無しさん (ワッチョイ 23b7-S6wV)
垢版 |
2025/06/26(木) 21:29:08.64ID:zdpAcYpu0
AndroidスマホでもiPhoneでもAIモデルをローカルで実行してチャットできる無料アプリ「Cactus Chat」レビュー
https://gigazine.net/news/20250626-cactus-chat-android-ios-ai-local/

インターネット接続不要でAIモデルをローカル実行できる「LM Studio」にMCPサーバーへの接続機能が追加される
https://gigazine.net/news/20250626-lmstudio-mcp/

上記のAIとマクロ機能を使用すればAIのみで会話できるようになる
ボイス・トォ・スカル「神や幽霊」の声はこれで行っているのか?

マクロ機能の拡張でインターネットにも自動で書き込みが可能になる
2025/06/26(木) 22:43:52.27ID:CNaMzIfEd
スレ違い。
474デフォルトの名無しさん (JP 0Hab-pT1b)
垢版 |
2025/06/28(土) 01:04:10.64ID:ILdMmS8aH
gcc4.6から4倍精度入ってるみたいですねえ。
Visual C++では入っているかな。調べてみます。
2025/06/28(土) 01:17:47.38ID:Ewd2t68S0
fortranで使うからね
gccはバックエンドから対応する必要がある機能を他フロントエンドのために入れるときはほぼC言語にも拡張として入れてくる
2025/06/28(土) 07:36:59.43ID:7fEtq2hP0
新たなクラスを作ってまえばいいのではないでしょうか。
477デフォルトの名無しさん (JP 0Hab-pT1b)
垢版 |
2025/06/28(土) 10:51:00.28ID:ILdMmS8aH
C++23からfloat128_tがサポート予定だけど
まだ詳細は決まってなさそう
VS2022ではまだみたい。gccも13.0以降?
478デフォルトの名無しさん (ワッチョイ 9bc2-SN7F)
垢版 |
2025/06/28(土) 15:20:29.63ID:CPXhvy7f0
>>477
MSのサポート掲示板だかコミュニティBBSだでVSは128_tやる気なし(一応要望は受け付けるけど)、みたいなの読んだ気がする。
2025/06/28(土) 15:55:10.80ID:mCCHdrx+0
C++23 では「そのような型があるなら std​::​float128_t として提供されることもある」というオプショナルなもので、あまりあてにならない。
https://timsong-cpp.github.io/cppwp/n4950/basic.extended.fp#4
ハードウェアとかツールチェインとかの都合もあるだろうし。
480デフォルトの名無しさん (JP 0Hab-pT1b)
垢版 |
2025/06/28(土) 16:00:47.16ID:ILdMmS8aH
うーむ。残念
2025/06/28(土) 16:13:42.13ID:mCCHdrx+0
std​::​float128_t が提供されるときは拡張浮動小数点型 (extended floating-point type) でなけりゃならないみたいだからクラスとして定義できない。
2025/06/28(土) 16:59:30.25ID:VJLy78nc0
float128_tがあってもFLT_MAXは64ビットという闇
2025/06/28(土) 18:19:57.03ID:mCCHdrx+0
>>482
??? float128_t と FLT_MAX にどのような関係があるのか意味が分からない。
2025/06/28(土) 18:26:24.23ID:uZW6Klue0
float 4バイトだろ 32ビットだぞ
2025/06/28(土) 19:30:31.51ID:mCCHdrx+0
float が 4 バイトなのに 8 バイト相当な値が FLT_MAX として定義されている (言語仕様に準拠していない) 環境があるという意味?
2025/06/28(土) 19:40:49.68ID:Ewd2t68S0
最大の浮動小数点型を表す定数のどれかと間違えたんでしょ
__int128があってもintmax_tが64ビットのままみたいな話のfloat版のつもりだったと思う
487デフォルトの名無しさん (JP 0H8e-mQSl)
垢版 |
2025/06/29(日) 08:57:18.64ID:9LYz8h1TH
インターネットからファイルをダウンロードするのに、現在のc界隈ではどんなライブラリを使用してるの?
vc2010あたりなら、標準で使えていたけど今でも使えるのかしら?
2025/06/29(日) 10:59:10.19ID:zQA4sk9y0
ちょっ質問なのですが
class Fooの中で構造体型PrivateStructがprivateな型として定義されており、
PrivateStruct型のFooのprivateなメンバFoo::m_stもある状況に対し、
Fooの外でauto&でもってPrivateStructの型を使用できて、
あまつさえFoo::m_stの値を読んだり書いたりできたりしてカプセル化神話が崩壊したんだけど
これっておま環?
(コード)
https://ideone.com/slBA72
2025/06/29(日) 12:56:56.18ID:RnCZLFSE0
>>487
Windows が前提なら WinINet を使うのが素直なやり方だと思う。
規格の多少の更新などがあっても OS の側で対処してくれるからアプリケーションはリビルドする必要すらなく長期的に使えることが期待できる。

マルチプラットフォームを考えるなら Curl が楽かなぁ……。
2025/06/29(日) 13:04:25.17ID:RnCZLFSE0
>>488
アクセス指定は識別子の可視性であって、間接的なアクセスも含めた一切の利用を禁止するわけではないよ。
2025/06/29(日) 13:14:06.51ID:zQA4sk9y0
上のコードの
>auto& st = x.refStruct(); // stはFooのprivateな型だがビルドが通る。
が識別子PrivateStructの可視性を無視してくれる理由がわからんぬ……
これ
>PrivateStruct& st = x.refStruct();
と書いたら型の名前PrivateStructの可視性がprivateなのでもちろんエラーになる
2025/06/29(日) 13:18:58.11ID:zQA4sk9y0
訂正orz
×: >PrivateStruct& st = x.refStruct();
○: >Foo::PrivateStruct& st = x.refStruct();
2025/06/29(日) 13:37:38.54ID:RnCZLFSE0
>>491
> 識別子PrivateStructの可視性を無視してくれる理由

識別子 PrivateStruct を使っていないから。
この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。

プライベートなデータメンバ m_st だってその参照を外へ持ち出してるだろ。
外で m_st という名前でアクセスできないが m_st に対応するオブジェクトへのアクセスは (アクセス経路があるなら) アクセス指定に左右されない。
同様に、プライベートに定義した型を型名ではアクセスできないが型を使えないわけではない。
2025/06/29(日) 13:59:10.64ID:zQA4sk9y0
>識別子 PrivateStruct を使っていないから。
>この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。
なんで?
不完全な型の参照はエラーになるのだから
コンパイラは型推論の際Foo::PrivateStructという完全な型の情報まで突き止めているはず……
なんでFoo::PrivateStructの可視性を無視してくれるのや……
無視せずエラーにする言語仕様もあり得たはず
ていうかエラーにならないのがおま環でない証拠がいまのところ無い……
2025/06/29(日) 14:09:12.19ID:RnCZLFSE0
>>494
名前に対する使用制限である旨がはっきりと書いてある。
https://timsong-cpp.github.io/cppwp/n3337/class.access#1.1
2025/06/29(日) 15:12:39.04ID:FAAHlPSo0
>>494
でもFoo::PrivateStructを指すpublicなtype aliasがあったらやっぱりエラーにしないで!
とか言ってきたらはっ倒すぞって感じの言語仕様やなあ
2025/06/29(日) 15:29:55.25ID:PWOccKtm0
プライベートメンバーの参照を返す関数を public でアクセスできる設計の方が驚き
2025/06/29(日) 15:52:20.20ID:RnCZLFSE0
>>497
これ単体で見るとおかしいがプロキシパターンなどでそういう構成になることはある。
2025/06/29(日) 16:51:17.70ID:RnCZLFSE0
すまん。プロクシパターンではないな。
見当違いなことを書いてた。

まあこの場合は言語機能の確認のサンプルだと思うから設計がどうこうはあまり気にしなくていいんじゃね。
2025/06/29(日) 19:25:35.84ID:TdQ2JxNKa
たしかに直感的には auto で private な型を推論してしまうのはヤバくね?という感覚になってしまうが
続くレスで指摘されてるとおり private な識別子だからといって外に持ち出せないわけではないので(それを禁止するほうが弊害が大きい)
そういうもんだと思ってプログラマが注意するしかないな
元々 C++ はやり方次第で言語仕様の本来の目的を外れたヤバい方法がいくらでもつかえる言語であり
どんな場面でも常にプログラマは注意を払うべきなので、そういう C++ の"性格"がこの場面でも出たというところか
こういうのがどうしても気になり完全な"性格"の言語が欲しいなら、他の言語にいったほうがよい
2025/06/29(日) 19:47:06.28ID:ivfL45vHM
>>489
libcurl でいいと思う。便利だし。
curlコマンドと同じように使えるはずだし。
2025/06/30(月) 19:44:03.19ID:etdu4EFd0
長い名前空間の扱いの質問なのですが、
例えばA::B::C::DみたいなクラスD内でP::Q::R::SのようなクラスSを使用していて
ヘッダーファイルが
namespace A::B::C {
public class D {
 void foo(P::Q::R::S& s);
};
}
みたいな感じになるのですが、実際にはこのP::Q::R::Sが非常に長く正直見苦しいです
かといってusingをヘッダー内で使うのは良くないですよね?
こういう場合にP::Q::R::Sの部分を簡潔な表記にする方法はありますでしょうか
2025/06/30(月) 20:47:28.37ID:CUK0Fuvn0
namespace pqrs = P::Q::R::S
でいいんじゃない?
2025/07/01(火) 21:41:31.12ID:W7Fp4vWi0
Sしか使わないならusing P::Q::R::S;
2025/07/01(火) 22:22:06.69ID:kHEih0Y20
>>504
using P::Q::R::S; したらもしも using namespace A::B::C; したときに P::Q::R::S も探索対象になってしまう。
使う側に余計な影響を与えないようにするには別名をつけるほうがより良い。
506デフォルトの名無しさん (ワッチョイ 3641-ctb7)
垢版 |
2025/07/03(木) 00:24:37.09ID:ye5zZInN0
エンベデッド分野は今でもC/C++が主流なの?
AIに任せられない分野だから生きのこれそうで気になっておりまする
2025/07/03(木) 09:26:35.93ID:q23h/8z8a
良いんじゃね
2025/07/03(木) 11:06:49.67ID:4Hn86Ej50
>>506
組み込みシステムも多様なので性質や規模によるでしょ。
リアルタイム性が重要なところでは C/C++ は主流のままだと思うけど、プロジェクト全体が C/C++ だけで構成されることは少なくなるんじゃない?
509デフォルトの名無しさん (ワッチョイ 420e-vr7j)
垢版 |
2025/07/03(木) 11:57:31.86ID:0Ka09OV10
リアルタイム性はOSがやることだし
言語関係ないよ
510デフォルトの名無しさん (ワッチョイ e79a-0q56)
垢版 |
2025/07/03(木) 12:22:21.27ID:dQk6sKVB0
Javaや.NETはGCでストップ・ザ・ワールドが発生するからリアルタイムに弱いらしい
最近は目標停止時間を1ms以下に抑えるGCもあるけど、あくまでも目標であって保証ではないからね
2025/07/03(木) 15:27:43.14ID:d0nwmVKl0
>>509
イベントスレッドでIOされてもOSがなんとかすると思ってんの?
512デフォルトの名無しさん (アウアウウー Sabb-H9/A)
垢版 |
2025/07/04(金) 08:50:43.54ID:fF3rQ1JLa
組み込み
リアルタイムOS
これほど曖昧な言い回しは他に無い
2025/07/04(金) 10:17:03.12ID:wZ441BSd0
>>509
リアルタイム性が重要なところというのはまさにそのリアルタイム OS のことで、それらを書くのに C/C++ が主流という話なんやで。
そんで既存の OS を使う場合でも次にアプリケーションを用意すれば動くというわけではなくて、組み込みシステムなら大抵の場合にデバイスドライバも書かなければいけないし、 OS が面倒みてくれる範囲は小さい。

低レイヤの整備がすでに整っている状況ならアプリケーションはもうちょっと言語の選択肢はあるかもね。
514デフォルトの名無しさん (ワッチョイ a332-vr7j)
垢版 |
2025/07/04(金) 10:58:10.60ID:8a61AjkK0
リアルタイムOSでないOSで、リアルタイム性重視ならそうだが
リアルタイムOSで作るなら言語は何でもいい
515デフォルトの名無しさん (ワッチョイ a332-vr7j)
垢版 |
2025/07/04(金) 10:59:28.16ID:8a61AjkK0
例えば24時間365日止まってはいけない産業用制御なんて
C++でも何でもない
2025/07/04(金) 11:09:00.86ID:7dTC+3QP0
シェルで済むならシェルにしなさい。(UNIX)
2025/07/04(金) 11:13:55.32ID:lC93JhvQ0
言語なんでもいいって?
リアルタイムOSってそもそも言語の選択肢少ねーだろ
2025/07/04(金) 11:19:04.05ID:lC93JhvQ0
>>512
いうほどあいまいか?
せいぜい中身がLinux、Windowsでアプリのインストールも自由みたいなやつだけだろ
2025/07/04(金) 20:28:14.57ID:wNUogzY00
>>511
ちょっI/Oしたらやっぱリアルタイム性に影響出るの?!
んまー秒単位でwaitして帰ってこないみたいな極端なI/Oポートがあったらそうかもしれないが
2025/07/04(金) 20:39:26.88ID:wNUogzY00
>24時間365日止まってはいけない産業用制御
冗長構成かフェイルオーバーするような枠組みとしての取り組みが第一優先な希ガス……
ソフトウェアーの冪等性により同じバグが同じタイミングで発生して冗長構成が無意味化するする危険性については
十分テストしてバグを撮ったのちに起動タイミングをずらすなどの工夫を行えばポアソン分布の同時確率か何かに従って無視できうる(と思う
さすがに原子炉の制御とかだとプロセス単体も形式検証して他分野よりもっと十分検証するらしい(間接伝聞
2025/07/05(土) 12:14:15.08ID:JEWbe+UQ0
そんなレベルはラダー図で書くやろ
2025/07/05(土) 12:31:12.20ID:yj3snSzGM
というかリアルタイムOSの話から関係ない24/365システムの話を出すあたりよくわかってないことを雰囲気で話すタイプの人でしょ
523デフォルトの名無しさん (ワッチョイ af77-vr7j)
垢版 |
2025/07/05(土) 20:19:54.08ID:iY4IPiMb0
>>521
C++ではないわな
2025/07/06(日) 06:14:16.80ID:B20RUTJT0
質問なのですが
ケースA) std::stringstream ist("A B"); char c1, c2, c3; に対し、ist >> c1; ist >> c2; ist >> c3; とすると
ist >> c2 は正常に読めて、ist >> c3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動なのですが
(ちなみに読み取った文字は c1='A'、c2='B'。c3の読み取りは行われない

ケースB) std::stringstream ist("A B"); std::string s1, s2, s3; に対し、ist >> s1; ist >> s2; ist >> s3; とすると
ist >> s2 を実施した時点で早々に!ist.good()かつist.eof() となって挙動が相違し
(ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない

ケースC) しかしBの後に空白を追加してstd::stringstream ist("A B "); とすると、
ist >> s2 は正常に読めて、ist >> s3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動になる
(ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない

となってケースB)とケースC)で共通に使えるような最終要素まで読み取り完了判定ロジックが無く
std::istream神話が崩壊したんだけどこれっておま環?
一体どうすれば……orz
2025/07/06(日) 06:16:00.70ID:B20RUTJT0
確認用サンプルコード:
https://ideone.com/Guifzs
2025/07/06(日) 06:47:52.68ID:B20RUTJT0
とりま上のコードからフォークしたソースコード
https://ideone.com/4WPZtB

 parse_as_string_with_common_logic(std::istream& is, std::string& s, bool& bErr)
みたいな判定処理にしたらケースB、Cを共通に扱えるような印象
なのですが正しくはどうすればよいかわからん……
2025/07/06(日) 07:26:05.90ID:oIAQiRlj0
一般的な話ならchar以外の>>で一貫した挙動を期待するのに無理がある
期待した文字が来なかったらungetするかどうか?ファイル最後の改行をどうするか?シグナルが来たら?とか色々あるし
ケースBで言えば"B"の後に文字が続いていればs2に含まないといけないのだから内部的にはケースAで言えばc3まで試し済みの状態
EOFフラグを見るのではなく例外で受け取ったほうが確実
2025/07/06(日) 10:18:34.40ID:RFZXbMVga
ケースB、Cを共通に扱える
ist.eof()でいいやん
Bが一回余分にループするのは気持ち悪いけど
気にしたら負け
2025/07/06(日) 10:53:22.37ID:14zTNASB0
普通はoperator bool(または fail())を使う
2025/07/06(日) 10:56:09.61ID:B20RUTJT0
>>527
だいたいわかりた
 is >> s
ライブラリの「>>」の仕様的にsが任意のクラスで有り得るから、
例えばsが複素数クラスで2つの要素を読み取るブツなのに対し要素を1つだけ読み取れなかった場合、
みたいなのが生じ得るがis.eof()ではそこまで表現できない故にライブラリ側では
char以外の一般のケースについて責任を持たないというと理解すた、
従って、test_parse_as_string_with_common_logic(const char* szInput, bool& bErr)を
charの読み取りによってeof()判定するように直したわ
これならiostreamの正当な使い方だけで構成されておりかつ目的を果たせているはず……
https://ideone.com/eaYGEt
2025/07/06(日) 11:00:55.07ID:B20RUTJT0
>>528
>Bが一回余分にループするのは気持ち悪いけど
いきなりis >> s してその直後のeof()を当てにするロジックである限り、
リンク先のケースBの挙動となり、最後の要素に引き続く空白文字がないとき
最後の要素が入力ストリームにあるのに受け取れないというもっと深刻な事態となる以下略

>>529
operator boolはis.good()と同じはず……
なおかつそれ単独では(is >> sのsがchar以外のとき)ケースBの解決になんね
2025/07/06(日) 11:06:26.76ID:B20RUTJT0
ごめoperator boolは!is.fail()やった……orz
2025/07/06(日) 11:24:16.88ID:B20RUTJT0
二転三転してすまんこ考えを改めたはサーセン……orz
入力ストリームはシリアルポートみたいな途中で入力がブチ切れる危険性があるブツである
こともあるから、
 ケースB) (空白) (非空白文字列の期待する全体)
 ケースB') (空白) (非空白文字列が受信タイムアウトにより途中で切れたもの)
の区別が!isになったというだけでは区別がつかない。一方、
(空白) (非空白文字列) (空白)
まで受け取ったら、(非空白文字列) がタイムアウトにより途中で切れたものでないことが確実となりワカル
故に、ケースBやB'みたいな条件を扱うこと自体がライブラリの仕様想定外なのかもしれん……
通常のテキスト読み込みでは行末に改行文字(空白文字のうち)が1文字以上あるから、この枠内で話が収まる。

Unixみたいに改行文字が '\n' 1文字だけな環境で、改行文字を読み飛ばして
呼び出し元に返さないgetline()みたいなやつで読んだ結果を
istringstreamしようとするとケースBが顕在化するが、
この場合は強制的に末尾に空白文字を付けることができうる
そうすればケースBは発生しない(ただし空白文字を付け忘れるとバグ
2025/07/06(日) 11:56:43.72ID:wbQZP2jZ0
iostreamなんかをテキストの厳格なパースなんかに使わなければならない理由から考え直した方がいい
535デフォルトの名無しさん (アウアウウー Sa9b-zcFv)
垢版 |
2025/07/06(日) 12:20:19.64ID:RFZXbMVga
末尾で改行無しでeofが来るファイルは多い
2025/07/06(日) 12:43:07.86ID:B20RUTJT0
>>529
ゴメ operator std::istream::bool() か std::istream::fail() だけでとりま解決したわスマンカッタorz
https://ideone.com/Fd5zV6

オンメモリのストリームである std::istringstream であっても>>533のケースB'に当たるケース
(オンメモリなので非空白文字列でデータが終わっている場合)においてbadbitがセットされるっぽい
この挙動がおま環でないかどうかはわからん……
2025/07/06(日) 12:47:26.46ID:B20RUTJT0
>>534
いまさらlex的な処理をgetc()で手で書いたりstrtok()に戻ったりしたくないし……
2025/07/06(日) 13:40:09.19ID:VHUnBvW80
パーサコンビネータ的なものを先に作るのがモダンな方法だが……。
汚い部分を抽象の向こうに押し込めるだけなので汚さが無くなるわけではない。
小さい規模だと愚直な方法が楽だったりするよ。
2025/07/10(木) 15:17:59.65ID:pWdjbLc50
C++を勉強して思ったのが
C++って基底クラスをリストに登録させて
派生クラスの機能をひたすら実行させることに特化してるように思うのだけどこの考え方で合ってる?
要はリストありきな感じ
2025/07/10(木) 15:54:02.04ID:UMLMi9p20
>>539
ゲームのフレームワークでは全てのエンティティを登録してそれに対する更新を繰り返すというモデルがありふれているが、 C++ 的にそれが普通というわけではない。
2025/07/10(木) 16:45:53.90ID:1drjG1ps0
>>539
一度デバッガで実行をトレースしてみ?
542デフォルトの名無しさん (ワッチョイ 9f88-D0JT)
垢版 |
2025/07/10(木) 18:55:50.32ID:y21Xxg220
>>508
な、なるほど
何にしても、この先生きのこるには C/C++ は必要そうだね
Py や JS なんかだと若い衆がどんどん来るから負けそうだし・・・
2025/07/10(木) 21:11:59.82ID:pWdjbLc50
>>540-541
ありがとうございます
リストを自作するなりstd::listを使うなりして
printfみたいな文字出力をする時も、出力部分をタスククラスにぶっこんでラッピングして
出力は派生クラスでオーバーライドしたc->draw();みたいなのに任せる、というのはゲーム専用で他ではあまりされないんですね
2025/07/11(金) 01:51:13.39ID:/nWuXYnL0
C++ は設計理念のひとつとして「人に何かを強制しない」というのを挙げていて、やりたいように書けることを重視してる。
同じパターンでプログラムを書いているように感じるなら単にあなたがそのやり方しか知らないだけ。
分野ごとに大枠ではやりやすいパターンが定着していたりはするので、ひとつの分野だけ見ていると頻出パターンがあるように見えることはあるかも。
545デフォルトの名無しさん (ワッチョイ 9f15-sH2C)
垢版 |
2025/07/11(金) 11:58:09.09ID:nUxw0t1Z0
BASICも同様の理念で作ればいいのに
546デフォルトの名無しさん (ワッチョイ bff3-4Q3H)
垢版 |
2025/07/11(金) 12:28:00.28ID:36pXyECQ0
>>544
Z世代にはRuby on RailsやRustのほうが良いかもしれませんね
547デフォルトの名無しさん (スフッ Sdbf-zcFv)
垢版 |
2025/07/11(金) 14:36:44.91ID:zLrVPFvnd
>>543
RustのDisplayやDebugなんてまさにそれだが
548デフォルトの名無しさん (ワッチョイ 1fb7-p46g)
垢版 |
2025/07/12(土) 13:34:42.02ID:Y1veRsrW0
C++でデフォルトコンストラクタで確保したリソースだけデストラクタで破棄したくてコピーコンストラクタやコピー代入ムーブコンストラクタやムーブ代入で得たリソースはデストラクタで破棄させたくないときどうする?
rustみたいな所有権システム必要になるんですか?
549デフォルトの名無しさん (ワッチョイ f74e-Wka8)
垢版 |
2025/07/12(土) 14:19:56.77ID:tjRcyRc80
なんでそんなことが必要なのかわからないけど、破棄するかどうかのフラグを持っておけばいいんじゃないの?
設計から見直した方が良いようなきがするけどw
2025/07/12(土) 17:03:35.88ID:BGsI/m1X0
>>548
俺もなんでそんなことが必要なのかわからないけど、pip使ってデフォルトコントラスタのオーナーだけにshared ptrでリソース管理させるとか?

これだとバグが怖いから、素直にshared ptrでリソースを共有したほうがいい気がする。
2025/07/12(土) 17:24:13.44ID:1YAX70Df0
ゲームプログラムをマルチスレッドにするとき、何をマルチスレッドにするの?
ストレージのロードとかはともかく
552デフォルトの名無しさん (アウアウウー Sa9b-zcFv)
垢版 |
2025/07/12(土) 18:45:10.30ID:/RtKayKia
マルチスレッドにしたいものをマルチスレッドにする
553デフォルトの名無しさん (ワッチョイ f7bd-eG3U)
垢版 |
2025/07/12(土) 19:12:52.47ID:LUVzIFWA0
遠景のテクスチャのロードなんかは別スレッドかな?
当たり判定などのロジックは遅延なく1フレーム16ミリ秒以内にやらなきゃいけないのでメインスレッドでやるしかない
ゲームでマルチスレッド使うのって難しいよね
2025/07/12(土) 20:02:23.86ID:5KyGwfre0
排他処理が入ると並列化の恩恵がだいぶん減るので高速化の意図でマルチスレッドを使うなら排他が不要な部分を見つけるのが第一だね。

メモリなどの各種のリソース管理の後始末を別スレッドに任せるという例も聞いたことはある。
デストラクタが起動するとサブオブジェクトのデストラクタも連鎖的に起動するからワンフレームの時間が限られている状況では間に合わないということも起こる。
だからデストラクタは後始末が必要なリソースをテーブルに登録するだけにして、別スレッドが実際の後始末をするってことね。
もう使うことの無いリソースだというのは分かってるから排他は少なくてすむ。
(ヒープメモリの管理テーブルはスレッド共通だから排他がゼロとはいかないと思うけど。)
後始末が少しくらい遅れてもどうということはないし。
2025/07/13(日) 11:30:27.40ID:WDtYO/xJ0
まあ、
アクションとか以外の、1/60秒で同期させなくていい処理ですかね…
遠くのPhysXの物理とかもできるのかな…

数年ぶりで、レイトレーシングとか未経験だわ…
2025/07/13(日) 11:36:28.87ID:WDtYO/xJ0
>>554
コンテキストスイッチとか気にしないといけないですね…
PlaystationとXboxとPCゲームで、それぞれに最適化とか大変そうですね…
557デフォルトの名無しさん (ワッチョイ cecd-YjA1)
垢版 |
2025/07/13(日) 21:38:10.94ID:e/4c/Agi0
・人間は犯罪を起こす種族と言い切っている
地球はすでに丸見え、レーダー電波で宇宙人に居場所をさらしている
公開: 2025-07-13 21:00
https://karapaia.com/archives/524757.html
 >>明らかに人工的なもので、200光年以内にある知的文明なら、地球の場所を把握できる可能性が高い。
 >>アレシボ天文台のような超高感度の望遠鏡を使えば、理論上は6万光年先からでも地球の電波を検出できるとされている。
 >>に宇宙空間で“丸見え”の状態にあり、その状況は75年前から続いているのだ。問題は、彼らが友好的な文明であるという保証がまったくないことだ。
★>>可能性としては、(我々人間のように)きわめて敵対的かつ侵略的な種族であるケースも十分にあり得る。
558デフォルトの名無しさん (ワッチョイ ce59-YjA1)
垢版 |
2025/07/14(月) 12:26:06.28ID:D5VD7WG/0
GPT-4.1超えの中国製AIモデル「Kimi K2」が無料公開される、複数のテストでGPT-4.1やClaude 4 Opusを打ち負かしエージェントタスクもこなす
2025年07月14日 11時10分
https://gigazine.net/news/20250714-ai-kimi-k2/
>>Kimi K2はベースモデルの「Kimi-K2-Base」と事後学習済みモデルの「Kimi-K2-Instruct」の2種類に分かれてリリースされています。以下の図は「Kimi-K2-Instruct」「DeepSeek V3」「Qwen3-235B」「GPT-4.1」「Claude 4 Opus」「Claude 4 Sonnet」「Gemini 2.5 Flash」のベンチマークスコアを並べたものです。Kimi-K2-InstructはすべてのテストでオープンモデルのDeepSeel V3とQwen3-235Bを超えるスコアを記録し、一部のテストでGPT-4.1やClaude Sonnet 4などの商用モデルに勝利しています。
◇上記サイト内にダウンロードリンクがある
2025/07/14(月) 14:37:25.45ID:4jx6FCSc0
>>540
お前ゲーム作ったこと無いやろ・・・
2025/07/14(月) 16:00:51.76ID:sJl0ASyp0
ただエンプティ言いたいだけ違うんかと
2025/07/14(月) 16:18:22.23ID:CQ+aGKeG0
画面描画FPS(frames per second)を固定させる為に、以下の待ち処理を入れるとFPSがメッチャ安定する:
while (system_clock::now() < t_after_sleeping) {
Sleep(0);
}
しかし強制フリーズさせてるみたいで、ハード痛めたりしないか不安なんだが。どうなん実際の所?詳しい人教えて
2025/07/14(月) 16:27:01.51ID:NLDJkZue0
マルチスレッドのセオリーとしてはSleepせずにビジーループするほうが問題
なんだけど、Sleepだと精度悪すぎてちゃんとFPS担保できるのか心配にはなる。動いてるならそれでいいけど
2025/07/14(月) 17:49:12.87ID:23SHNwVj0
>>561
定石と言えるレベルの普通の処理だよ。
既に指摘されているようにタイマーの精度の問題はあるので工夫を入れる必要はあるけど、
精度が悪くても処理が遅れる (想定より FPS が下がる) 可能性があるだけ。

どういう理屈で不安に思っているのかがよくわからないので何を間違っているのか説明できない。
Sleep(0) が何をやってるかわからない (これが何らかの危険な処理だと思っている) ってこと?
2025/07/14(月) 20:03:36.26ID:CQ+aGKeG0
test
2025/07/14(月) 20:04:22.78ID:CQ+aGKeG0
>>563
ありがとう。Sleep(0)が何をやっているかはわかっている
2025/07/14(月) 20:05:51.19ID:CQ+aGKeG0
>>561のwhile中を空にする(Sleep(0)しない) > while中でSleep(0)する > while中でSleep(1)する(時間単位を1msにして待ち時間を1ms縮める)
という具合にCPU占有率が上がる。精度は落ちるがSleep(1)を入れた方がCPUの負荷は減るので、何となく安心する。
2025/07/14(月) 20:06:23.37ID:CQ+aGKeG0
>>561のwhileの中でSleep(0)しつつ準ビジー状態を強行するのがどれだけハードに悪影響なのか、その辺りの実績経験を盗みかった。卑しい盗人を助けてくれ下さい
2025/07/15(火) 00:13:36.01ID:KEPxDdxR0
C++スレ的にはthis_thread::yieldかと思ったんだが
2025/07/15(火) 04:24:49.25ID:4J45BJq00
>>561
グラフィックのAPIは何使ってる?
何と比べて安定したのかしらんけどそのやり方でディスプレイの出力と同期できるわけないのわかる?
2025/08/04(月) 06:40:16.41ID:0gfRmGh70
ちょっ質問なのですが
 unsigned long m_ulAbortReasonBmp;
 std::mutex m_mutex;
 std::atomic<unsigned long> m_ulBias;
に対し、
 m_mutex.lock();
 m_ulAbortReasonBmp |= fooBmp; // (1) : m_mutex.lock()期間内
 m_mutex.unlock();
 m_ulBias.store(barVal, std::memory_order_release); // (2) : m_mutex.lock()期間外だがm_mutex.lock()期間の後
としたとき、
Q1. m_mutex.lock()している他スレッドから見て(1)、(2)の操作の順序(m_ulAbortReasonBmpが変化した後、m_ulBiasが変化する)は保証される?
Q2. m_mutex.lock()していない他スレッドから見てんも(1)、(2)の操作の順序(m_ulAbortReasonBmpが変化した後、m_ulBiasが変化する)は保証される?
2025/08/04(月) 07:34:20.02ID:0gfRmGh70
Q1については、他スレッドから見てm_ulBiasのreadが
m_mutex.lock()期間(クリティカルセクション)内のm_ulAbortReasonBmpへの書き込みより
先行するようなことが起きるとクリティカルセクションの意味が消失するから保証される

Q2についてはm_ulBiasのreadがプロセッサコアにどう計画されるかわからないから
m_ulAbortReasonBmpへの書き込みの後になることは一般に保証されない、
が、現在人類が手にしているクリティカルセクションの実装(lock期間に入るときと出るときそれぞれで
いかなるreadもwriteも無差別にバリアする)により、lockしないスレッドから見ても順序が実質的に保証される、

でおk?
2025/08/04(月) 08:33:59.43ID:0gfRmGh70
訂正orz、
Q2のケースでは保証されない
現在人類が手にしているクリティカルセクションの実装(lock期間に入るときと出るときそれぞれで
いかなるreadもwriteも無差別にバリアする)のが真実だとしても、
それはm_ulAbortReasonBmpやm_ulBiasをwriteする側のスレッドがwrite順を守るというだけで、
m_ulAbortReasonBmpやm_ulBiasをreadする側のスレッドにはメモリバリアするコードが無いから
read順を好きに計画され、writeした順でreadされる保証が無い
2025/08/04(月) 08:41:31.47ID:3rv0HXUI0
>ちょっ
かわいい
…舐めてんの?
2025/08/04(月) 16:26:39.26ID:Tt4A7oMm0
>>572
コードに無いreadの話が入ってくるのが意味がわからない
聞きたいことはwriteの順番が保証されるかではないのか?
writeの順番は保証される
575デフォルトの名無しさん (ワッチョイ 7f4e-W9J6)
垢版 |
2025/08/10(日) 21:35:26.79ID:gXfPFnW/0
男きたああああああああああ
576デフォルトの名無しさん (ワッチョイ d322-PSkW)
垢版 |
2025/08/22(金) 07:16:07.15ID:iDw/vpGA0
初心者だけど、
Pythonみたいにreturnを複数ってできないの?
touple使うくらい?
2025/08/22(金) 07:35:30.89ID:8V9ySHS/0
複数の値を一つにまとめればいいだけ
返す型次第
578デフォルトの名無しさん (ワッチョイ 5b85-ZBQJ)
垢版 |
2025/08/22(金) 08:55:40.38ID:LQncxxKI0
複数返したいならタプルでいいんじゃない
引数に出力渡すのが多いと思うけど
2025/08/22(金) 10:34:20.59ID:s1oN92u00
Python でも返却値として複数の値を返すことは出来ない。
Python で return にカンマ区切りで複数の式を書くとタプルになってる。
受け取る側で複数の変数を書いておけばタプルが分配 (unpack) されたりはするけど……
関数が返却しているのはあくまでもひとつの値という理屈。

複数の値 (いわゆる多値) を関数が返せる言語はそれほど多くない。
LISP 系は多値のサポートがあることが多いけどそれ以外だと Go くらいじゃないかな?
(マイナー言語だとわからんけどよく知られている主要な言語にはほとんどないと思う。)

シンタクス的には C++ で return にカンマ区切りで複数の値を渡そうとしたとき、
つまり
return 1, 2, 3;
というように書いたときのカンマはカンマ演算子として解釈される。
カンマ演算子は左辺の結果を捨てる (評価はする) ので 3 だけが返却値になる。

C++ で複数の値をひとまとめにするには波括弧で囲む記法があって

std::tuple<int, int, int> foo(void) {
return {1, 2, 3};
}

というように書けるんだが……
この波括弧は初期化の記法であってタプルのリテラルというわけではないのでそこんところは注意。
2025/08/22(金) 10:49:05.94ID:hiXhYkKD0
>>579
受け取る方はどうやって受ければいいのですか?

私の頭だと構造体で返せばいいかな なんつて
2025/08/22(金) 11:06:34.54ID:HM+/3rtsM
>>580
構造化束縛で取り出すのが楽
構造体を定義する手間が気にならないならそれでもいい
2025/08/22(金) 11:49:05.11ID:ZeYv0pFNd
C++も昔に比べれば随分と楽になった
2025/08/22(金) 12:07:46.82ID:s1oN92u00
>>580
タプルは単にタプル型の値なので普通に受け取れる。

auto bar = foo();

といったように書ける。
タプルから要素を取り出すのは std::get<0>(bar); といった要領になる。
受け取るときに変数に分配するやり方もあって

atuo [r1, r2, r3] = foo();

というようにも書ける。
これを構造化束縛という。
おそらくこれが期待していたものなんじゃないか?

この記法はタプルに限らずタプルライクな型、配列型、データメンバが全て公開直接メンバであるような型などであれば使える。
2025/08/22(金) 12:23:44.06ID:s1oN92u00
もし使っているコンパイラが MSVC なら MSVC のデフォルトでは C++14 になってるはずだからそのままだと構造化束縛を使えないかも。
(構造化束縛は C++17 から。)
私は MSVC を利用していないから具体的なやり方は知らんけど必要なら適当に設定してね。
2025/08/22(金) 17:49:52.20ID:hiXhYkKD0
どもです。構造化束縛ね。なんか聞いた事あるかなという程度だった。
使うかなぁ・・・
2025/08/22(金) 21:41:35.66ID:NcnZjMQ+0
構造体ほど強いまとまりではなく、返り値だけのゆるいまとまりなら構造化束縛の方が便利だけどねぇ
587デフォルトの名無しさん (ワッチョイ d38d-PSkW)
垢版 |
2025/08/22(金) 21:41:55.58ID:iDw/vpGA0
>>579
std::tuple<int, float, long> foo(void) { return {1, 2.1, 99}; }
atuo [r1, r2, r3] = foo();
って書いたら、
r1に1が、r2に2.1が入るの?
まあそれでもいいかな

PythonからC++に移植中で、ちょっと読みづらいと思ったので…
588デフォルトの名無しさん (ワッチョイ d38d-PSkW)
垢版 |
2025/08/22(金) 21:45:40.16ID:iDw/vpGA0
>>587
まあでも、なんで複数returnにしないのかね?
outの引数が多すぎだわ
2025/08/22(金) 22:11:20.77ID:NcnZjMQ+0
Python でも複数return ってできないと思うけど?
カンマ演算子でタプルを作って返してるだけでしょ
2025/08/22(金) 23:03:10.61ID:5NhjtIih0
そうやね。Pytnonのカンマは、言語仕様上は演算子とは一応区別されているみたいだけど、感覚的には演算子だよね。何で演算子ではないんだろうというのはちょっとした疑問だけど(1, みたいなのを後置演算子と呼ぶのはちょっと変とかそういうことかな?)
2025/08/23(土) 01:30:59.35ID:ynkOCuVA0
//こんな感じ?
#include <iostream>
#include <tuple>
using namespace std;
tuple<int, float, long> foo() {
return {1, 2.1, 99};
}
int main(){
auto [r1, r2, r3] = foo();
cout<<r1<<endl;
cout<<r2<<endl;
cout<<r3<<endl;
return 0;
}
2025/08/23(土) 01:57:32.43ID:HIKpDy1T0
構造化束縛を調べてみたら
fooの返り値はtupleでなくてもpairで返しても良さそうなんだけど
どういうルールなの? キモい
2025/08/23(土) 02:11:02.56ID:CHT0FIec0
>>592
それがタプルライクの概念。
std::tuple_size の特殊化など、いくつかのインターフェイスを実装すればタプルと同じように扱ってくれる仕組み。

それとは別に配列の場合とか、全てのデータメンバが公開直接メンバなクラスもありということになってるのは単純に箇条書きで数種類のパターンを示す形になってる。
それほどパターンが多くはないがひとつの原則で表せるわけでもない。
2025/08/23(土) 02:22:04.99ID:HIKpDy1T0
>>593
>それほどパターンが多くはないがひとつの原則で表せるわけでもない。
キメぇよw
2025/08/23(土) 09:17:36.36ID:rBYkDYvT0
構造的部分型とか静的ダックタイピングって呼ばれるやつ?
596デフォルトの名無しさん (ワッチョイ d326-PSkW)
垢版 |
2025/08/23(土) 13:12:32.34ID:wVRYzYK20
>>591
int r1;
float r2;
long r3

r1, r2, r3 = foo();

って書きたいですね。Pythonみたく
2025/08/23(土) 13:15:39.41ID:DefMPT1k0
代入のときは tie を使う。
598デフォルトの名無しさん (ワッチョイ c9bc-zJwz)
垢版 |
2025/08/23(土) 15:01:16.09ID:p3yrvAiP0
テンプレートの黒魔術で脳汁出てからが本番
2025/08/23(土) 15:37:03.06ID:T+HzfXMC0
>>596
別の言語っぽくって考えは捨てた方が身のため
2025/08/23(土) 19:08:06.22ID:VwZegIlc0
666!
601デフォルトの名無しさん (スフッ Sdb3-im2P)
垢版 |
2025/08/23(土) 19:56:19.30ID:k0uySdFmd
struct {
int r1,
float r2,
long r3
} t;
t = foo();
って描きたい
struct に tuple からのコンストラクタを実装すれば良いのかな
2025/08/23(土) 20:18:30.70ID:CHT0FIec0
>>601
最初から foo がその型で返せばいいんでないの?
2025/08/24(日) 12:07:46.50ID:HqphwiLf0
C言語から続くカンマ演算子が分かってないんでは?
2025/08/24(日) 12:09:48.21ID:gU3L8vdd0
Pythonあがりだから型を定義する意味がわかってないんだと思う
2025/08/25(月) 07:55:54.04ID:O202BBJ90
a=10
a=’hello'
翻訳しながらだからできるんだろうけどね。
2025/08/25(月) 08:19:19.75ID:X23BjBGY0
>590
左辺にも現れるからじゃね?
607初心者プログラマー (ワッチョイ d5ce-rKTE)
垢版 |
2025/08/28(木) 17:50:07.17ID:GULY1B8W0
cppでbazelでmediapipeのビルド方法を教えてくれる方はいませんか?

自分の環境

Visual Studio Community 2022
Windows11  64 ビット
scoopでbazel 5.3.0
Python 3.10.0
2025/09/07(日) 03:16:03.97ID:Fgms30k2a
なんか、javaより簡単に思えてきました。
2025/09/07(日) 06:54:14.37ID:Ur1gsBeL0
そうか。
2025/09/07(日) 07:39:38.11ID:yhbLpr+z0
obj1=obj2;
の後obj2を変更すると、obj1が書き換わってまってびっくりして
その後、Javaが怖い親父です。
611デフォルトの名無しさん (ワッチョイ 7f5f-Z2G8)
垢版 |
2025/09/07(日) 13:56:14.79ID:ZFShxqYO0
C/C++もポインタを代入するとそうなるよ
2025/09/07(日) 15:17:34.87ID:DiKqvn8B0
この親父他の言語ほぼ使えんだろ
613デフォルトの名無しさん (アウアウウー Sa47-Y7lD)
垢版 |
2025/09/07(日) 15:34:33.99ID:AK/wIzqla
普通 https://ideone.com/wGzMHW
p=[3,1,2]
q=p
p[1]=0
print(q)
2025/09/07(日) 16:53:15.89ID:2DaEs5aKM
>>610 >>613
それはオブジェクトへの参照の競合が起きてる
それぞれで書き換え更新または読み取り中の書き換えをすることでスパゲッティなコードを招いてしまう
その競合をコンパイルエラーにして防いでくれるのはRustだけだと思う
2025/09/07(日) 17:20:59.28ID:yhbLpr+z0
>>614
c/c++なら、ポインタなのか参照なのか見ればわかるし、
まずコンパイラが型をチェックしますんで。はい
2025/09/07(日) 17:34:06.57ID:5bTmv8Qp0
参照メインの言語で書き換えを頻繁に行うとそりゃ事故るよ、注意力にも限界がある
値の書き換えをするならC++のように変数が直接値を持つ言語がいいし
参照をメインにするなら関数型言語のようにimmutableを基本にするべきだ
2025/09/07(日) 18:17:46.03ID:kASsF2K3r
ないしは、q=p; ってしたときに、pがダメになってくれるか
2025/09/07(日) 22:03:02.60ID:2DaEs5aKM
>>615
C++では参照の競合があってもエラーとならず安全性は保証されないよ
例えば以下の挙動

std::vector<int> v{0, 1, 2, 3, 4, 5, 6, 7};
int& fifth = v[5];
v.push_back(100);
std::vector<int> w{8, 8, 8, 8, 8, 8, 8, 8};
fifth = 555;
std::cout << "v[5] = " << v[5] << std::endl;
std::cout << "w[5] = " << w[5] << std::endl;
2025/09/08(月) 07:59:15.17ID:It1Ffdlu0
>>618
これわ別問題じゃないのですか。
にしても、おとろしい
push_backされた時点で再構築されて、新規作成のオブジェクトの要素を保持してしまったで合ってますか?
2025/09/08(月) 10:27:54.64ID:bx3qX9/R0
状況を一から説明すると……
これは fifth が古い無効になった場所を参照する可能性があることが問題。

std::vector の各要素は連続した空間に配置されることが保証されている。
要素の増減でその場所の都合が悪くなれば再配置される可能性があり、
再配置が起こったときは要素を指していたイテレータや参照は無効になるというルール。
無効なイテレータや参照を通じてアクセスしたら何が起こるかわからない。

再配置が起こる可能性がある操作については個々に仕様に書かれているけれど、
キャパシティを変更する (可能性がある) ような操作はどれも再配置が起こりえると覚えておけばいい。

そんでもってこれのややこしいところは「可能性がある」ってところで、
キャパシティをどれくらい拡大するか実装によって差があるし、
状況によっては場所を移動せずに大きさを伸ばせるかもしれない。
つまり問題が顕在化しないかもしれない。

一般論として倍々に延ばす実装がよく知られているからこの例では最初に要素を 8 個にして
顕在化しやすいようにしたんだろう。
2025/09/08(月) 10:47:28.92ID:It1Ffdlu0
>>620
どもです。要素数8ってのもさすがって感じでした。
2025/09/08(月) 22:24:25.56ID:EA0JjXQaM
>>620
今回の問題に限ればその通り
ただし問題の本質は二つの参照(変数fifthとpush_back呼び出し時の参照)を使ったこと
今回はダングリング参照で問題を分かりやすく示したがメモリ問題もvectorも本質ではなく任意のデータに対する参照で問題が起きる

既に参照fifthを持つ状況で同じデータを指す別の参照を関数push_backに渡してデータが書き換えられた
参照fifthが指す値は当初から値が変更されてしまったりダングリングで無効な値になる可能性がある
これが二つの参照の競合による問題で値がいつの間にか書き換わってしまっていることでバグも誘発する
両方の参照が書き換えを伴わないreadonlyの時のみ安全になる
片方もしくは両方の参照が書き換えを伴うと安全でなくなる
2025/09/08(月) 23:06:53.70ID:HoahUzIM0
再配置が行われるものに参照使って、その生存期間を超えてアクセスするのは未定義動作になるわな。C++に慣れてればそんなコードは書かないが、初級者向けではない。readonly より、lifetime の問題でしょう
2025/09/09(火) 00:29:11.16ID:TMUamLpP0
参照が無効になる条件は規定されてるし、先にcapacity設定するとか避ける方法も用意されてる
「問題の本質」とやらはただのライブラリ仕様の無理解だろ
分かりにくいとか間違えやすいとかの批判なら分かるけど
2025/09/09(火) 07:24:41.95ID:DVL1/TmTM
>>623 >>624
申し訳ないがcapacityや再配置の話はしていない
lifetimeや参照が無効になる話もしていない
まずそれらを頭の中から消し去って考えよう
元々の話である同一データに対して参照が二つ持った時の話のみをしている
もちろんvectorは登場してもしなくてもいい
2025/09/09(火) 07:29:27.85ID:DVL1/TmTM
元々の話とは>>610>>613でこれらが参照の競合の最も単純な例
様々な言語で発生してもちろんC++でも生じる
同一データに対して複数の参照を持つと他の参照によっていつの間にか指していたデータの値が書き換わってしまう
これがバグやコードのスパゲッティ化を引き起こす最も大きな原因の一つ
そのためreadonlyでない限り複数の参照を避けるのが好ましい
そのため競合する参照を禁止している言語もある
627デフォルトの名無しさん (スフッ Sdba-bj1o)
垢版 |
2025/09/09(火) 10:47:02.21ID:g327vfuJd
readonlyでない競合する参照を禁止している言語もある
2025/09/09(火) 12:16:08.28ID:iPWQv8Oa0
はいはい線型論理言いたいだけ
2025/09/10(水) 00:51:51.50ID:BnR46AnOa
>>618
これはvにpush_backしたところでキャパ超えて別の場所にリアロックされ、ともない元のvの領域が空になって、即座にwがスポンとそのvが元あった場所に配置されたってことなのですか?
2025/09/10(水) 02:12:52.51ID:IF/zSGeMd
そうだよ。
規格上は何の保証もないから、処理系とかによっては全然違う結果になるかもしれないけど。
2025/09/10(水) 10:07:49.21ID:3vsmg39oa
>>630
どうもありがとう
632デフォルトの名無しさん (ワッチョイ 4e1f-bj1o)
垢版 |
2025/09/10(水) 10:13:08.62ID:zTYInGVv0
>再構築されて新規の要素を保持してしまったで合ってますか
こう聴かれると「違う」と返事したくなる
2025/09/10(水) 18:40:20.64ID:Vv9EwJFH0
未定義動作だからな
たまたま鼻から悪魔が出る代わりにそうなっただけだ
2025/09/10(水) 22:18:27.54ID:RAO/BxQt0
参照の競合という用語に違和感。並行性に関わる競合状態 (race condition) の話をしようとしているのか?
2025/09/10(水) 22:31:03.50ID:BZTqerG60
してない
2025/09/22(月) 23:24:45.15ID:ZT49UQS30
でわ 簡単?な話題を。
int data{}; ってやります? int data{0}; ってやります?
2025/09/23(火) 06:55:15.77ID:S9rfzcfC0
int data = 0; ってやる
2025/09/23(火) 10:47:53.44ID:0b1Ncss10
auto data = 0;
とか、型が明示的なのが好みなら
auto data = int();
といった選択肢もある。

私は
int data = 0;
派だけど。
2025/09/23(火) 10:57:08.68ID:NP1ck5iL0
>>638

autoを使う理由は?
2025/09/23(火) 11:12:21.28ID:0b1Ncss10
>>639
暗黙的であれ明示的であれ初期化子に型があるのだからそれとは別にもう一度型を書くのは二度手間と言える場合がある。
どういう考え方をとるべきなのかは場合による。
2025/09/23(火) 11:17:00.61ID:NP1ck5iL0
>>640
autoは曖昧だから、ゆるいプログラム用だね
シビアなプログラムは無理
2025/09/23(火) 12:32:51.63ID:zwbfimRS0
>>638
イテレータの返しを受けるオブジェクトはauto使うと便利みたいな
2025/09/23(火) 14:23:55.04ID:SO+rqWsF0
>>641
テンプレート作るときには必須になる場合もある
ゆるいって理解は雑
2025/09/23(火) 14:48:06.92ID:0b1Ncss10
前提条件を変えると何でも言えてしまう。
とりあえずここでは発端は >>636 なのだから変数 data の型が int であり (多相にはしない) 内容はゼロで初期化するという狭い仮定を置いたほうがよかろう。
auto を持ち出したのは変に話題を曲げてしまったな。すまぬ。
2025/09/23(火) 20:34:08.12ID:3YWvMRZsr
今北

いまさら人に聞けない
auto って、右辺の型もそのまま左辺にコピーしてきてよ、って感じで使ってるんだけど
その認識で間違ってない? 落とし穴とかある?
2025/09/23(火) 20:39:56.49ID:7uroOMzl0
右辺が式の場合もあるし
その時自分が思ってた型とautoの型が一致するとは限らないところとか
2025/09/23(火) 21:26:37.10ID:qWXNEai60
autoで手抜きしすぎるとあとでソース追うときにエライ苦労することあるから気を付けろよ
2025/09/23(火) 21:34:42.79ID:NP1ck5iL0
>>647
Pythonとか、
型が書かれてないから追いづらいよね
2025/09/24(水) 02:24:38.07ID:hHyw0Adk0
>>645
その認識でおおよそ正しいが変則的な部分もある。
auto foo = { 1, 2, 3 };
みたいに書くと initializer_list に推論されたりするのは知らないとちょっとびっくりするかもしれない。

それと修飾子などを組み合わせで使うことも出来る。
const auto* bar = &baz;
みたいに。
2025/09/24(水) 07:20:39.19ID:tMR45KsJ0
>>649
何の目的であるの?
C#的にゆるくなるだけだな…
2025/09/24(水) 08:23:07.29ID:yL+cLVSS0
>>650
ゆるいというのがどういう意味で言ってるのかわからないからなんとも言えない。
特に有用なのはテンプレート内で、たとえば

template<class T>
void foo(T x) {
auto bar = baz(x); // baz は関数テンプレートだとする
// ここでなんやかんや
}

みたいなのがあるとき auto を使わずに型を合わせて書こうとすると

template<class T>
void foo(T x) {
decltype(baz(x)) bar = baz(x); // baz は関数テンプレートだとする
// ここでなんやかんや
}

みたいになってわずらわしい。
初期化子の型をそのまま持ってくれば良いときに型を明示しても可読性に貢献しないし、簡便な記法があると楽。
652デフォルトの名無しさん (JP 0Hc6-xemb)
垢版 |
2025/09/24(水) 12:48:43.78ID:4f1PT/5nH
std::make_sharedとか使うと行が長くなりがちだからauto便利
653デフォルトの名無しさん (ワッチョイ 4a4e-rfem)
垢版 |
2025/09/24(水) 23:18:51.30ID:OQUpbPvH0
autoでしか出来ないこともあるから奥が深い
2025/09/24(水) 23:47:45.55ID:wXWMV3aG0
罠仕様が仕込まれてるってだけでは
2025/09/25(木) 06:56:54.48ID:iHrblX0Rr
Rust派に言わせれば、C++が罠らしいぞw

でもそのC++が、今の俺を生んだ
2025/09/25(木) 16:58:42.68ID:tx4jrZ/E0
有用なときもあるけど、ライブラリ用のコードで乱発するとメンテナンスが大変
可読性メンテナンス性を考えるなら、冗長でない限りはちゃんと書いた方がいい

>>651
それもbaz(buz?)の戻り値の型はTから導出出来るんだから、よほどややこしくない限りはそれ(decltypeで手抜きせずに)を書いた方が可読性メンテナンス性の面では良い
2025/09/25(木) 17:00:57.66ID:/3f9OB3n0
>>656
お前テンプレートプログラミングの素人さんだよね
2025/09/25(木) 20:40:29.81ID:tx4jrZ/E0
>>657
自己紹介乙w
Expression Template使って線形代数のライブラリ作った人間だが、ETで利用者がauto使うとどういう問題が起きるか答えてみ
まさか分かりませんとか言わないよな?
テンプレート使ったライブラリ(てか標準ライブラリ)を"利用する"しかしたことのない人間が調子に乗るな
2025/09/25(木) 20:43:04.50ID:nRsNESWS0
なんか「その理論を作ったのは私ですが」みたいなものを感じる
技術発表の際の怖い質問とかなんとかのやつw
660デフォルトの名無しさん (ワッチョイ 4a4e-rfem)
垢版 |
2025/09/25(木) 20:43:46.25ID:ofoI5OnU0
言葉ならなんとでも言えるわな
2025/09/25(木) 20:44:29.25ID:hN2fGih80
>>651
ふーん
便利だね

でも、templete自体が何だか好きじゃないわ…
2025/09/25(木) 20:46:08.51ID:hN2fGih80
>>656
ちゃんとっって、型を?

型が書いてないと、パット見でわからないよね…
2025/09/25(木) 20:54:22.86ID:tx4jrZ/E0
>>662
そう&同感
ぱぱっと書いて何やってるかもすぐ分かるような場面(戻り値がイテレータとか)ではそりゃautoでいいと思うけどねぇ
2025/09/25(木) 21:36:33.99ID:SUv+BSiy0
今ならconceptを使うのが筋が良いんだろうな
他の言語みたいに型制約を書かずにジェネリクスを使えるけど、これは良くも悪くもだよね
楽と言えば楽だけど
2025/09/26(金) 01:34:47.37ID:aJA0eUoF0
>>658
リポジトリ晒して

まさか出せませんとか言わないよな?
テンプレート使ったライブラリ(てか標準ライブラリ)を"内製する"しかしたことのない人間が調子に乗るな
2025/09/26(金) 01:53:11.78ID:IAhZoqBcM
>>658
端的に言って

> それもbaz(buz?)の戻り値の型はTから導出出来るんだから、

ここだよ
関数テンプレートなんだから型が導出できるとは限らない
なぜお前は断言したのかな?
導出できない例にぶち当たったことがないからだよな
2025/09/26(金) 07:26:52.27ID:uQKo8FSG0
>>665 >>668
煽ればタダで教えてもらえると思ってるいつものアホか

>導出できない例
あるわけないだろどうやって実体化するんだよwwwwww
668デフォルトの名無しさん (ワッチョイ 8e02-C7mS)
垢版 |
2025/09/26(金) 08:15:01.31ID:FGFv/5hn0
conceptはテンプレートだけじゃなく普通の変数制約にも使えればなぁ。
継承がほとんどいらなくなる。
669デフォルトの名無しさん (アウアウウー Sacf-kv3/)
垢版 |
2025/09/26(金) 10:28:59.69ID:UkFmEBgMa
>>647
判ります
2025/09/26(金) 11:12:51.14ID:TfDLIQWg0
手抜きというか情報を重複させないためにはautoが必要
苦労するのは型情報を追えないツールが悪い
2025/09/26(金) 11:53:52.65ID:IRzSnzQy0
>>648
ああ、おそろしいあの言語は
素人にはササッと組めて楽チンだろうけど大掛かりなものは無理だろうな
想像しただけで脳が震えて耳から溶けて出てきそうだ
2025/09/26(金) 12:02:33.14ID:E9e6Z1Un0
expression template を auto で受けるとまずいってのは Eigen みたいな設計の話かな。
あれはムーブがない時代の設計だから一時オブジェクトの参照を保持してしまう (先に一時オブジェクトが解体されて寿命管理が破綻する) のが問題なのであって、解決のための仕組みが与えられたにもかかわらずそれを使ってない設計が悪い。
expression template の仕組み上でどうしても解決できないというわけではないし auto のせいでもない。

ムーブのコストすら許容できないだとか、古い C++ (C++03 以前) もサポートしなきゃならないみたいな事情があるなら「すまんけどこのライブラリを使うときは注意して」というべき筋合いの話で、「auto なんか使っとるからじゃ!」みたいな態度はおかしいだろ。
2025/09/26(金) 12:09:27.62ID:uQKo8FSG0
>>672
>のが問題なのであって
違う。ETの場合、関数(演算子オーバーロード含む)が返すのは、式の構造を表すオブジェクトなのでそれをautoで受けると式の展開が行われず、計算処理の無いコードになってしまう
それを逆手に取ってauto経由で展開のタイミング遅らせることもできるけどね

あとETの利点はムーブどうこうで解決できる問題だけではないし、
誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの?

で、はちみつお前いつも「知ったかぶりしていい加減なことを言う奴」に怒ってる割に、自分も同じ事してるよな
2025/09/26(金) 12:11:01.51ID:uQKo8FSG0
あと
>「auto なんか使っとるからじゃ!」
一言も言ってないんだが。流れ読み直しておいで
2025/09/26(金) 12:54:00.88ID:E9e6Z1Un0
>>672
> autoで受けると式の展開が行われず、計算処理の無いコードになってしまう

書いてなかったが評価タイミングは適当な関数で明示的にする前提を置いてた。
未定義を踏むのは他の何と比べても駄目だ。単に思ってた結果と違ったなんてのは重要じゃない。

> 誰も「ETを万人が使うべき」だなどと言っとらんよ、何が気に入らんかったの?

日常的には使わないケースだからこそだ。
それが auto の問題点のように挙げられてただろ?
ライブラリのほうが C++ の自然な習慣に合わせるのが筋なのにさ。
2025/09/26(金) 13:15:19.27ID:4po4sxfpp
>>657-658
2025/09/26(金) 13:19:26.24ID:4po4sxfpp
>>675
あと、ETで式の評価が発生するのは関数の呼び出し時ではない。どうでもいいけど
あと俺が作ったのは4次元まで(行列なら4x4まで。ゲーム用なので)だからヒープ使わんのでそもそもムーブどうこうは関係無いし、勝手によそのライブラリの未定義の話を持ってこられても困る
2025/09/26(金) 13:57:45.37ID:E9e6Z1Un0
>>677
eigen は例として話題に出したつもりだったが余計だったな。
端的に主旨を言えば expression template の原理的には auto で受けれるように作ることは可能、かつその方が親切な作りだろうという話をしてる。

お前がどんな設計をしたのかなんてそれこそ俺には知ったことじゃないし、知りようもない。
お前のライブラリで auto で受けれないのはお前がそう設計しただけの話なので、 それを根拠に auto がどうこう言ってもなんの足しにもならん。
2025/09/26(金) 14:04:20.28ID:4po4sxfpp
>>657-658
ETの話はここで出した。

で、俺のautoの使い方に関する意見は>>656

自分が何をやってるか良く考えてからレス書き直せ
2025/09/26(金) 14:08:11.66ID:E9e6Z1Un0
>>679
悪い設計のせいで利用者に不自然な書き方を強いるライブラリを作ったという話だということは理解してる。
2025/09/26(金) 14:13:42.65ID:4po4sxfpp
あといちいち知ったかぶってるバカに教えてやるのも腹が立つが、普通数値演算でET使うときは代入演算子やコンストラクタに式を渡した場所で初めて式を展開するんだよ
(autoでわざと評価を遅延させることも可能だと書いただろアホ)
Eigenでも多分そう
もちろんboost::spiritとかの構文解析ならパース処理の関数に渡すまで展開しないだろうが
2025/09/26(金) 14:14:19.90ID:4po4sxfpp
>>680
不自然なのはお前の、「スキルに見合わない自尊心」だと思うぞ
2025/09/26(金) 14:24:32.42ID:4po4sxfpp
バカが屁理屈書いてきそうだから再三言うが、>>658>>657を叩くために出した問いに過ぎない
「意図しないコードになる」という話

これだからお前には絡みたくないんだよマジ鬱陶しい
2025/09/26(金) 17:03:47.95ID:iKKvsVQ80
お前ってのははちみつのこと言ってるのかね?
自分から絡んどいて何言ってんだろうコイツとしか思えんけど
2025/09/26(金) 17:53:41.26ID:uQKo8FSG0
>>684
で、>>666の導出出来ない例って何?www
2025/09/26(金) 19:18:42.84ID:+hZbpaFa0
>>685
ラムダの型導出できないだろ?
なんでこんなのも知らんのにえらそうにしてんの?
あと

https://wandbox.org/permlink/q5sTF1hp76f7jpnq

とかな
この例でfooでもif constexprを使えばautoはなくせるがそんなことやって可読性とかほざけない
他にもパターンあるぞ
謝罪してお前が作ったらしいヘボライブラリ公開したら教えてやってもいいぞ
2025/09/26(金) 19:32:01.31ID:uQKo8FSG0
屁理屈にも程がある
導出出来なきゃどうやって実体化するんだよ、Tしかテンプレートパラメータが無い状況でT以外に依存するものがあるのか?
まさか結果がTに依存するテンプレートになったら「導出出来てない」とかほざくの?
Tに依存するコンテナのイテレータと何も変わらんよそれ
2025/09/26(金) 20:12:50.41ID:uQKo8FSG0
てかその例でauto使わずに戻り値格納するのにif constexpr使うしかないと思ってるとかどんだけ経験不足なんだ・・・(はっきり処理分けする必要がある場合を除く)
そんなクソみたいな例ならさすがにdecltypeかauto使いたくなるが(そもそも使うなと言ってないんだが)、conditionalも知らんのかお前は
必死に探してきてご苦労さん
2025/09/26(金) 20:41:40.17ID:aJA0eUoF0
あの…そろそろ言っとくが

おもろいこと書いたヤツが優勝な?
2ちゃん5ちゃんの原則だぞ
2025/09/26(金) 20:46:36.85ID:uQKo8FSG0
>>665はおもろいと自分で思ってんの?w
2025/09/26(金) 20:59:48.54ID:+hZbpaFa0
>>687
おじいちゃん、ラムダの例で詰んでんのわかる?
わかんない?
わかんないかぁ
2025/09/27(土) 00:06:32.90ID:ov4hhnsF0
やっぱautoはゆるいね
C#とかPython的な感じ…
2025/09/27(土) 05:08:15.66ID:rNLW6nkI0
C++は自由なんだよ

変な風にも使えるし、傍で見てたらめちゃくちゃにもなる
2025/09/27(土) 05:36:45.87ID:p3kzti810
自分が使った方がいいと思った時は使う。
しかないよ。後は規約や上司に従うぐらいか。
2025/09/27(土) 11:22:44.98ID:0x5FUGdK0
久々にC++スレらしくなってておっちゃん楽しいよ
2025/09/27(土) 17:37:01.17ID:nSvwU9re0
>>681
コンストラクタや代入演算子で実際の計算を起動する方式も支持があるのは知ってるよ。
だからその代表例として有名どころの Eigen を話題に出したのだし、そこに齟齬はない。
その上で唯一の方式ではないし悪い設計だと言ってる。

私に反論するならどうしてそんな方式を取るのか利点 (悪い設計ではない理由) を説明すべきだった。
「数値計算で expression template を使うときは普通」なんて情報量ゼロのことを書かれても何の意味も感じられない。

コンストラクタや代入演算子をトリガーにするのは expression template を最適化として使う考え方だ。
つまり見かけ上は普通に式を書いてるだけなのに実は高速化しているというのがキモで、普通の式である「かのように」見える抽象化に意味がある。

実際の型を意識せざるを得なくなった段階で抽象化は破綻してる。
auto を使ったら何が起こるかを意識しなければならないのはライブラリ設計の失敗なんだよ。
隠れていたりいなかったりする半端な抽象化層を悪い設計と呼ぶのは間違ってるか?

> 再三言うが、>>658>>657を叩くために出した問いに過ぎない
> 「意図しないコードになる」という話

そんなので意図しないコードになってしまうような作りのライブラリは出来が悪いという話なのはかわらん。
様々な事情に配慮してそうならざるを得ないということもあるというのならわかるが、
そうじゃなくて「それが普通なんだ」と思い込んだ狭い見識での判断なんだろ?

型を書くか auto にするかはスタイルの問題で、どちらを使うかで挙動が切り替わってしまうような設計のライブラリが本当にまともか?
2025/09/27(土) 17:54:13.79ID:iipvXy1W0
よほど悔しかったんか知らんが、恥の上塗りやめたら?
autoをC++に取り込んだ人達は、お前が調子に乗るために提案したわけでも採用したわけでもなかろうよ
698デフォルトの名無しさん (アウアウウー Sacf-kv3/)
垢版 |
2025/09/27(土) 19:49:03.02ID:k7oMySGea
>>696
八光さんに同意だけど
それだとC++が設計ミスと言う結論になりかねない
2025/09/27(土) 20:00:56.28ID:nSvwU9re0
C++ が設計ミスだらけなのは今更な話だろ。
2025/09/28(日) 18:27:48.51ID:MSQtxm6D0
解決しますた!
2025/09/28(日) 19:20:47.09ID:pjQge+jC0
そうか。
2025/09/29(月) 19:03:56.70ID:ALxfRd8b0
VSCode(WSL)のclang-tidyで質問です
関数にconst付けるのを警告する「readability-make-member-function-const」って奴ですがDoSave()関数にも警告が出ます
可能ならgetterのみに付けたいのですが皆さんこれはどうされてますか?
無効にしてるか、無視してるか、const付けてるか、その他何かやってますか?

C++の環境構築は初めてなので助言をいただけるとありがたいです
よろしくお願いします
2025/09/29(月) 19:56:30.29ID:BDszbKFL0
こういうこと?
要はconst性を「セーブさせたくない」という符丁に使いたいのかな

class Hoge; // DoSave()持ち

void foo(Hoge& h1, const Hoge& ch2)
{
  h1.DoSave(); //ゆるす
  ch2.DoSave(); //ゆるさない
}

そんな変なことやめとけとしか思わないけど、どうしてもそうしたい理由があるなら言ってみ
2025/09/29(月) 20:49:50.37ID:Qgirjd9Z0
const_cast<Hoge*>(&ch2)->DoSave();
2025/09/29(月) 22:22:15.60ID:ALxfRd8b0
>> 703-704
すみませんサンプルを載せるべきでした

ソース:
double Point::X(){return x;}
void Point::X(double value){ x=value;}
ヘッダ:
static Point {
public:
double X();
void X(double value);
private :
double x=0;
};
clang-tidy を実行すると「double Point::X()」のX部分で「Method 'X' can be made const (readability-make-member-function-const)」という警告が出ます
調べてみると「constを追加して、内容が変更されないことを明確にすべき」らしいです
ソース:double Point::X() const {return x;}
ヘッダ:double X() const;

上記だけなら問題無いのですが、下記のような関数にも同じ警告が出てしまいます
ソース:void Sample::DoSave(){ ファイルの保存処理 }
ヘッダ:void DoSave();
この場合、getterではなく処理なので、const は付けるべきでは無いと考えてます

そこで質問ですが、clang-tidy で静的チェックを行う場合「readability-make-member-function-const」の扱いはどうすべきなのか気になった次第です
「無効にすればいいのか」と思いながらも、C#のプロパティではないので、「C++は変更されないことを明示した方が分かりやすいのか?」とどのように設定すべきか悩んでいます
よろしくお願いします
環境は下記:VSCode、ubuntu 22.04 (WSL)、C++ 17、clang-tidy-15
2025/09/29(月) 23:01:05.35ID:jk3QzjEU0
NOLINT
2025/09/29(月) 23:04:57.63ID:rfIMSjI90
>>705
その場合const付けたほうが良い理由は「変更されないことを明示」することより
constのインスタンスに対してその関数を呼べなくなることでは?
↓はエラーか警告(どっちかは忘れた)になると思う(constオブジェクトの非constメンバ関数は呼び出せない)

void SaveData(const Sample sample)
{
sample.DoSave();
}

void Sample::DoSave() const { ファイルの保存処理 }
にしておけば、DoSaveは呼び出せる
2025/09/30(火) 01:33:12.30ID:Xmjd+d/v0
処理だからconst付けないんじゃなくて、そのメンバ関数がPointクラスの中身を書き変えないことを保証するためにメンバ関数の後ろにconstは付ける
つまり、Save処理はPointクラスを特段変更するメソッドではないだろ?
だったらconstは付けるべき
2025/09/30(火) 07:07:46.33ID:NaKN2pJV0
>>705
つまり、constを本来の意味(中身を変更するかどうか)ではなく「getterであるかどうか」を示すラベルとして使いたいってことでしょ?
で、何を持って「getterであるかどうか」はあなたの頭の中にしかない定義であって、そのlintはもちろんコンパイラもエディタも世のライブラリも知ったことではない
それらをオレオレconstラベルに適合させるためにどうしたらいいか?というのがあなたの問うていることだ
やっぱりどうしてそんなことがしたいのか全く理解できない
2025/09/30(火) 08:58:44.76ID:0fqHawiZ0
>>705
オブジェクトがなんらかのストレージを抽象化したものであると考えたらそのオブジェクトが const であるときはセーブ機能を使えないようにしたいというのはわからんでもない。
実際の管理は他の場所でやっていて窓口に過ぎないならメンバ関数に const を付加可能 (だがそうしたくない) なこともあるだろう。

それが良い設計かどうかは脇に置いてそうすることに決めたときに clang-tidy の警告はどうすればいいのかということなら、
例外的な状況なので例外的なものとして無視してもらうしか仕方ないんじゃないか。
NOLINT コメントを書いておくと clang-tidy はその箇所については警告を抑制してくれるよ。
2025/09/30(火) 10:38:19.22ID:Dzyyn8xKd
>>706-710
御返事がおそくなりすみません
ご意見ありがとうございます
自分の理解不足と設計思想が間違ってるまたはずれてるんだと理解しました

・「readability-make-member-function-const」の指示にしたがってconstを付けるのが良い
・更に言うと-fixオプションで自動付与するレベルの内容
・だけどNOLINTで無視もできるよ(無視してるとは言ってない)

ってことで理解しました
勉強になりました
ありがとうございます
712デフォルトの名無しさん (ワッチョイ 2596-TDpG)
垢版 |
2025/09/30(火) 21:38:35.37ID:bXNPhBlr0
VC++20のテンプレート制約で不可思議なことが起きるのだけど、以下の二つは同じ意味だよね?
1だと目的通りTParentに該当static関数<T>があれば適用、なければスルーという挙動になるのだけど、
2だと無くても適用されちゃって他を探しに行かずにオーバーロード未解決に陥るんだけどどういうことだろう?

1
template<typename T, typename TParent> concept HasSizeGetter = requires { (size_t)TParent::template get_size<T>(); };
template<HasSizeGetter<TParent> T> static consteval size_t get_require_space() { return TParent::get_size<T>(); }

2
template<typename T> requires requires { (size_t)TParent::template get_size<T>(); } static consteval size_t get_size() { return TParent::get_size<T>(); }
713デフォルトの名無しさん (ワッチョイ 2596-TDpG)
垢版 |
2025/09/30(火) 21:40:50.61ID:bXNPhBlr0
ちょっと書き間違えてたけど1はget_require_spaceじゃなくてちゃんと2と同じくget_sizeね
2025/09/30(火) 23:39:48.15ID:0fqHawiZ0
>>712
オーバーロード未解決という形で現れるのはよくわからないけど
この場合はその関数テンプレートを使わなくても (呼び出さなくても) エラーになるのが正しい挙動だと思う。

get_size は依存名ではないのでテンプレートの定義時 (テンプレート実引数を当てはめる前) に名前のルックアップが試みられて失敗する。
requires 節はテンプレート引数の妥当性を検証する仕組みなのでテンプレート引数をあてはめなくても式が不成立になるようなのはエラー。

というのが私の理解なんだけどあんまり自信はない……。
2025/09/30(火) 23:47:38.26ID:0fqHawiZ0
>>714
これは TParent::get_size が存在しない場合の話で、
TParent::get_size が存在するけど TParent::get_size<T> の展開に失敗する場合はちゃんと次の候補が選ばれるはず。
(手元に MSVC がないんだけどオンラインコンパイラで一応の動作確認はした。)
2025/10/01(水) 06:54:56.10ID:O1Ml42XO0
>>715
そう、2の場合でもTParent::get_sizeはあるけど<T>とはマッチしない場合にはちゃんと1と同じ挙動になるんだよね
TParentにstaticなget_sizeが全くない場合だと1と2で挙動が変わってしまう
でも2って1をインラインに直接書いたものであって同じ意味だよね?
だからrequiresがどういう意味を持つかとか以前に挙動変わってくる時点で不可思議なんだよね
2025/10/01(水) 07:43:33.30ID:XKqCU3PC0
>>716
1 の場合は get_size は依存名だ。
そこで解釈が違うよ。
718デフォルトの名無しさん (ワッチョイ faa6-/eJP)
垢版 |
2025/10/22(水) 12:58:32.68ID:6nuMV8zc0
C++26から入るらしい^^と[::]という二つの演算子はどういう用途に使うものなのでしょうか?
2025/10/22(水) 13:31:13.53ID:/iXiQCcE0
>>718
リフレクションで検索したら色々な例がみつかるよ。
構文要素を値として取り扱う、本物のマクロだ。
2025/10/22(水) 19:35:11.69ID:t2Chdy11a
^^
↑ちょっと顔にみえる
721デフォルトの名無しさん (ワッチョイ aa71-zeRK)
垢版 |
2025/10/22(水) 21:43:50.71ID:q+0a8lK20
^^;
2025/10/22(水) 21:55:39.76ID:tW3LNod+a
^^;ゞ
2025/10/22(水) 22:05:42.67ID:b6F/3uj70
^^::←グローバル名前空間のリフレクション値
2025/10/23(木) 05:29:13.93ID:HOQCmR4+0
v^^
725デフォルトの名無しさん (ワッチョイ c1ef-6mJJ)
垢版 |
2025/10/23(木) 21:41:47.99ID:FPW1mHao0
山崎渉
726デフォルトの名無しさん (アウアウウー Sa09-6N1s)
垢版 |
2025/10/24(金) 14:17:57.63ID:nAYKU6CIa
GGは
へへ
ミミ
727デフォルトの名無しさん (JP 0Hab-oW0m)
垢版 |
2025/10/29(水) 17:48:11.20ID:KY7jGttbH
Y(^_^)Y なんすかこれ

口が違う。覚えてる人修正して
728デフォルトの名無しさん (アウアウウー Sae3-N4yN)
垢版 |
2025/11/11(火) 14:16:42.56ID:crDtfQHZa
バルタン星人のひと元気かな
2025/11/13(木) 14:20:45.09ID:jo2+4JNJM
多分基本的な質問ですまんけど、参照型のメンバー持ったクラスをmove対応させるのってどうやんのが定石?
ポインタにするしかない?
2025/11/13(木) 14:53:55.31ID:bJCWdXAy0
>>729
その参照が差す先のオブジェクトの所有権 (最終的に後始末する責任) を持っている状況ということ?
ポインタを交換する手法がよく使われるのはヌルで無効を表現してるだけなので所有権を持ってるかどうかわかるフラグを立てれるならなんでもいいよ。
型システム的に表現するなら optional と reference_wrapper を組み合わせるのがよいかな。(optional は参照を直接には保持できない。)
2025/11/13(木) 22:00:10.45ID:oKSfQs8Q0
いきなりわからんorz
2025/11/13(木) 22:38:55.22ID:PBCTneT3M
>>730
なるほどサンキュー
でもoptionは省きたいところ
moveしたあとは使わない前提でこれはUBになる?

class A {
 std::reference_wrapper<const std::string> m_s;
public:
 A(const std::string& s) : m_s(s) {}
 A(A&& rhs) : m_s(std::exchange(rhs.m_s, *(const std::string*)nullptr)) { }
};
2025/11/13(木) 22:48:43.43ID:qvmNyT2p0
・T*(ナマポ)にする
Pros: 一番素直、ムーブ後状態をぬるぽで自然に表現できる。
Cons: メンバ使ってるとこで*付けたり.を->に書き換えたりが必要。deleteとか加減算とか好き勝手できちゃう。今どきナマポとかダサい。
・std::unique_ptr<T>やstd::shared_ptr<T>にする
Cons: 多分セマンティクス違う(もともとはヨソのオブジェクト覗いてるだけでしょ?)
・std::referrence_wrapper<T>にする
Pros: 参照の置き換えという意味でこれも素直。
Cons: メンバ使ってるとこに.get()をつける書き換えが必要。ムーブがコピーになるので抜け殻に参照が残って潔癖な人だとキショい。
・std::optional<std::referrence_wrapper<T>>にする
Pros: 型的に一番真面目なので型マニアにっこり。
Cons: 書くのめんどい。「何これ?」って聞かれたときに説明めんどい(未来の自分含む)。.get()必要。
・メンバはT&のままにしてムーブコンストラクタとムーブop=の方で対応する
Pros: 既に使われてる所の書き換え不要。
Cons: ムーブ関数書くのとメンテし続けるのがめんどい。抜け殻に参照先残る。

どれも完璧じゃないから好きなの選んでいいよ
734デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
垢版 |
2025/11/13(木) 23:01:27.30ID:/tchf03X0
unique_ptrと同様のもの(unique_ref)を作ればいいんじゃねえのって話だろ
ただしptrはnullptrで無効を表現してるから
代わりにフラグを用意する
class unique_ref{
T& ref;//参照
bool isValid;//無効判定
//コンストラクタ
unique_ref(T&r):ref(r), isValid(true){}
//ムーブ コンストラクタ
unique_ref(unique_ref&& a){move(a);}
//ムーブ代入
 unique_ref& operator=(unique_ref&& a){move(a);}
move(unique_ref&&a){if(this!=&a && a.isValid) ref=a.ref; a.isValid=false;}
}
てなかんじかと
知らんけど
2025/11/13(木) 23:06:32.01ID:pKRh1I850
参照なんて引数と演算子オーバーロード以外で使ってもいいこと無くね?
2025/11/13(木) 23:07:03.58ID:qvmNyT2p0
そもそも所有権自分で保持してるメンバがもともとT&ってことはないだろ
どっか遠くのオブジェクトを見えるようにしてるだけでしょ?
(それはそれで設計的に焦げ臭いけど置いとく)
737デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
垢版 |
2025/11/13(木) 23:07:46.30ID:/tchf03X0
もしくはunique_ptrをunique_refでラップしてしまうのが楽か
738デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
垢版 |
2025/11/13(木) 23:10:58.33ID:/tchf03X0
>>736
たまにある
外部リソース(たとえばファイルハンドル)を一時的にクラスに保持して使いやすくするとか
なんにせよ寿命を明示的に管理しておかないと後でやばいことになる
2025/11/13(木) 23:14:39.55ID:qvmNyT2p0
>>738
ファイルハンドルだとして、それを管理するクラスがファイルハンドルの値自体を持たずにヨソに置いて参照するのはなぜ?
やっぱり意味がわからない
2025/11/13(木) 23:20:38.76ID:bJCWdXAy0
>>732
UB になる。
ポインタと違って参照自体は無効を表現できないのが C++ の基本ルールであり、 reference_wrapper でもそれは同じ。
それでもあえてやるなら適当にダミーのオブジェクトを作っておいてそれを参照していたら無効ということにするというようなことをできなくはないが……それはそれでちょっと不恰好だよね。
741デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
垢版 |
2025/11/13(木) 23:22:41.52ID:/tchf03X0
>>739
クラス内部でちゃんと管理するのがいいんだけど時には関数内クラスを定義してちょっとしたことを行うこともある(かも)
その時には所有権を一時的にでも委譲しなきゃならなくなる
2025/11/13(木) 23:30:06.73ID:qvmNyT2p0
>>741
ハンドルは外部で持ったままで、その関数内クラスにはハンドルの参照を渡す(関数内クラスの参照メンバを外部のハンドルで初期化する)って言ってる?それ委譲とは言わないよ
委譲したからにはそのリソースはその関数内クラスの消滅とともに消えないといけないけど、そうなったら外部で持ってたハンドルの実体はどうなるの?
どんなケースを想定してるのか全然わかんない
2025/11/14(金) 12:19:28.56ID:YW3kWFexM
>>740
までもnull objectはよく使ってるからそれにするわ
個人的にはすっきり
でもc++の参照っていらん子やん?って気がしてならない

class A {
 static constexpr std::string s_empty_str{""};
 std::reference_wrapper<const std::string> m_s;
public:
 A(const std::string& s) : m_s(s) {}
 A(A&& rhs) : m_s(std::exchange(rhs.m_s, s_empty_str)) { }
};
744デフォルトの名無しさん (ワッチョイ ff36-TpjX)
垢版 |
2025/11/14(金) 17:06:33.25ID:sw2A38eb0
>>743
型無しのnullpointerが型システム(機能保証)を破壊しているから、型を強要する参照は必要。
2025/11/14(金) 17:48:56.23ID:d/VpWy+aM
>>744
古くね?
そういうのはoptional使えってのが最近のやり方でしょ?
2025/11/14(金) 19:18:46.50ID:YeCIJNF30
>>743
参照は色々な場面で有用ではあるが、 D&E によれば最初の動機は演算子オーバーロードだと書かれている。
オブジェクトをコピーする必要がない (値をコピーせずに場所を渡せば充分) ような状況で参照がなくポインタを使うならいちいち &a+&b みたいにして書く必要が生じる。
いかにも煩わしいだろう。
2025/11/14(金) 19:55:59.90ID:p/1JbX4j0
C++より古いの新しいの含めて多くの言語が採用してるように参照は引数でのみ使用可能で良かったと思うよ
748デフォルトの名無しさん (ワッチョイ 9fda-V2U1)
垢版 |
2025/11/14(金) 20:35:30.63ID:/xnnTPah0
>>747
他の言語はともかく、C++の参照は引数に限定されてないですよ。

int a = 10;
int* pa = &a;
749デフォルトの名無しさん (ワッチョイ 1f42-q6Sd)
垢版 |
2025/11/15(土) 10:22:10.37ID:ncudN0/g0
747は、(実際の仕様はそうなっていないけど)引数でのみ使用可能なら良かったのに……という意味だと思うぞ。
750デフォルトの名無しさん (ワッチョイ 9fda-V2U1)
垢版 |
2025/11/15(土) 19:11:12.30ID:lfrbAWbT0
ああ
>使用可能で良かったと思うよ

ではなく、

>使用可能だったら良かったのにと思うよ
って事ですか
2025/11/15(土) 19:25:57.81ID:3JdS/6Ib0
カスみたいな読解力
2025/11/15(土) 19:35:13.09ID:QqRirP4Fr
そんなコミュ力高かったら、石が友達なんて言わない
753デフォルトの名無しさん (ワッチョイ 1f42-q6Sd)
垢版 |
2025/11/15(土) 19:39:44.33ID:ncudN0/g0
分かりやすいように749みたいに書いたけど、747で普通に意味が通じるので、「ではなく」というとちょっと違う気がするかな。言葉って難しい。
2025/11/16(日) 01:00:07.67ID:oagsDxeg0
こういう人が仕様書読んで実装すると思うとこわい
755デフォルトの名無しさん (アウアウウー Sa85-H7iN)
垢版 |
2025/11/16(日) 13:18:16.47ID:0LN83zrSa
横からだけど
>>747 で充分判る
>>748 は本当に日本人か?
2025/11/16(日) 13:32:50.84ID:Xh/GBEYv0
C++ばっかりやっとるからだよ
日本語を使え
757デフォルトの名無しさん (ワッチョイ 0dda-43h0)
垢版 |
2025/11/16(日) 16:38:31.73ID:r6khXsKc0
>>755
>748だけど日本人だよ。
>747日本語の文法としておかしいと思うんだが分かるんか…。
こっちが年食ったんかなぁ…。
2025/11/16(日) 16:49:19.65ID:D8AV/AUw0
あんたは機能的非識字なんでしょ
歳とか関係ないって
759デフォルトの名無しさん (ワッチョイ 91df-iLwu)
垢版 |
2025/11/16(日) 18:20:15.84ID:fnmgx6dT0
747は、日本語の文法としておかしなところは別にないけれども、748のような読み方も許すという点で多義的な文にはなっているかな。
「C++より〜ように」という前半の文脈があるので748のような受け取り方はしない方が普通だと思うが、文法的には748のような読み方も一応可能だろう。
「使用可能(ということ)で良かった」としたら、完全に一義的になっているとまでは言えないまでも、多少ニュアンスは明確になっているかな。そうでもないか。
2025/11/16(日) 19:06:28.66ID:B8gkzotY0
>>757
文字なんでニュアンスが伝わりづらいだけだよ

「この前の件だけど、両方出来るようになったよ」
「他と同じように片方のみで良かったと思うよ」

まあ誤解を与えない書き方とすると

「他と同じように片方のみで良かったのにと思うよ」
って感じで「のに」をいれた方が残念がっている様子が伝わってくるよね
761デフォルトの名無しさん (ワッチョイ e9f6-iLwu)
垢版 |
2025/11/17(月) 09:06:44.31ID:g7E0m0EQ0
C++はよく分からないので、cpprefjpにはいつもお世話になっているんだけど、生文字列リテラルのところにある「改行が入力された場合、改行の制御文字 '\n' に変換される」というのは説明として正確なのかな。
raw文字列リテラルのところの規格にはそれっぽいことは書いていないように思うし、改行文字は通常の文字としてそのままraw文字列リテラルに含められるだけであって、別に「変換」とかはされていないんじゃないかと思うんだけど。
2025/11/17(月) 10:18:46.23ID:DdlSQj440
>>761
'\n' に変換するという説明は誤りだと私も思う。
規格内の例中では \n と同等というような説明はあるのでこれを変換と誤解したのかも?
https://timsong-cpp.github.io/cppwp/n4950/lex.string#5
2025/11/17(月) 10:27:40.74ID:DdlSQj440
余談だけど生文字列リテラルの扱いにはちょっと変な特別扱いがある。
C++ では処理の初期段階で行を連結 (改行を削除) してしまうことになっていて、その時点では各改行が生文字列リテラルの中なのかどうか認識してない。
https://timsong-cpp.github.io/cppwp/n4950/lex#phases-1.2
後でトークンを分割するときになって生文字列リテラルを認識したらその範囲では連結を「取り消す」という処理が入る。
https://timsong-cpp.github.io/cppwp/n4950/lex#pptoken-3.1
結果としては改行はそのまま含まれるだけなんだけど、理屈としては色々な操作 (変換?) はされてる。

ただ、これは C++ の言語の解釈の話であって処理系の実装方法ではない。
つまり結果が同じであれば実装方法は問わないので連結してから取り消すのではなく連結の例外にしてもかまわないし、
生文字列リテラルを普通の文字列リテラルに変換するような手法もあるのかもしれない。
2025/11/17(月) 20:16:57.16ID:3c799E+W0
>>761
gccにCRLF改行のソースコードを食わせてもLF(\n)だけになったので変換はされてるんじゃないか
他のコンパイラの動作はしらね
765デフォルトの名無しさん (ワッチョイ 6e10-iLwu)
垢版 |
2025/11/18(火) 02:43:23.41ID:oTdu6LNz0
>>763
削除されるのは「\(改行)」(Pythonとかでは明示的な行継続と言われているやつ)みたいなやつだけで、(\ に後続しない)単なる改行はwhitespace文字として扱われるだけかと思っていたんだけど。

>>764
改行をLFだけにする(正規化?)のは、raw文字列リテラルに限らない共通の処理なのでは。
レスを投稿する

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

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