!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part165
https://mevius.5ch.net/test/read.cgi/tech/1698705458/
C++相談室 part166
https://mevius.5ch.net/test/read.cgi/tech/1745631298/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C++相談室 part167
1デフォルトの名無しさん (ワッチョイ 4664-VviL)
2026/01/26(月) 11:20:43.46ID:SIfTs9j802デフォルトの名無しさん (アウアウウー Sacd-Bm+i)
2026/01/27(火) 20:46:05.57ID:EarFEz5Ka >>1
O2
O2
3デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/29(木) 16:49:57.40ID:YJ+F37lYM 通常、"xxx.h" の中に、static 修飾されたグローバル変数
(内部リンケージ)を書くのはおかしい。
しかし、はちみつ餃子によれば、
const int g_a = 5; //(1)
は、static を付けて無くても内部リンケージなんだそうだ。
しかるに、(1) は、"xxx.h" の中に書く習慣がある。
なんかもやもやする。
(内部リンケージ)を書くのはおかしい。
しかし、はちみつ餃子によれば、
const int g_a = 5; //(1)
は、static を付けて無くても内部リンケージなんだそうだ。
しかるに、(1) は、"xxx.h" の中に書く習慣がある。
なんかもやもやする。
4デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/29(木) 16:51:36.41ID:YJ+F37lYM >>3
C++ Draft になんて書いてあるのかは知らないが、
内部リンケージと考えずに、COMDAT ANY Section だとすれば、
納得がいく。その場合、同じ定義を書くと、1つの section だけ
ガ残る。
C++ Draft になんて書いてあるのかは知らないが、
内部リンケージと考えずに、COMDAT ANY Section だとすれば、
納得がいく。その場合、同じ定義を書くと、1つの section だけ
ガ残る。
5デフォルトの名無しさん (ワッチョイ 9e3f-BbTi)
2026/01/29(木) 17:02:39.69ID:QeUvzik40 内部リンケージとなる const int をヘッダに書いてると、定数式として使われる分には問題無いけど
左辺値としてアドレスを取るようなことをすると無駄な重複定義が生まれたり、
それをインライン関数内でやるとODR違反になったりして問題になることがある。
今なら constexpr int としておくことで暗黙に inline 変数となり暗黙の内部リンケージからも外れるので問題無くなっている。
左辺値としてアドレスを取るようなことをすると無駄な重複定義が生まれたり、
それをインライン関数内でやるとODR違反になったりして問題になることがある。
今なら constexpr int としておくことで暗黙に inline 変数となり暗黙の内部リンケージからも外れるので問題無くなっている。
6デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/29(木) 17:07:48.31ID:YJ+F37lYM >>5
でも、C++ の教本では constexpr キーワードが導入されるより
ずっと前から、const 修飾のグローバル変数をマクロの代わりに
使うことが推奨されていた。
マクロの代わりになると言うのであれば、"xxx.h" の中に
書いて良いはずだったはずなのに。
でも、C++ の教本では constexpr キーワードが導入されるより
ずっと前から、const 修飾のグローバル変数をマクロの代わりに
使うことが推奨されていた。
マクロの代わりになると言うのであれば、"xxx.h" の中に
書いて良いはずだったはずなのに。
7はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/29(木) 17:31:08.04ID:Dsvv29Gw0 なんだかんだで整数程度はマクロで定義したほうが扱いやすいことが多かった。
正直言って C++03 時代に定数の定義のために const を推奨するのは理想論が過ぎると思う。
(そうしたいと思ってた人は多かったが言語機能が充分に噛み合ってなかった。)
実際に駄目だったからこんな基本的なところで改良が付け加えられてるわけだし。
正直言って C++03 時代に定数の定義のために const を推奨するのは理想論が過ぎると思う。
(そうしたいと思ってた人は多かったが言語機能が充分に噛み合ってなかった。)
実際に駄目だったからこんな基本的なところで改良が付け加えられてるわけだし。
8デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/29(木) 18:09:54.29ID:YJ+F37lYM >>77
>(そうしたいと思ってた人は多かったが言語機能が充分に噛み合ってなかった。)
しかし、C言語の算術定数の場合、整数、float、double が
定数自体の書き方で区別が出来るようになっているから、それほど
欲しいとは思わなかった。
それに、定数の型が char と int で全く動作が変わってしまうような
プログラムは、そもそも推奨されないというか、バグの元になる。
例えば、FILE *fp; に対して、
FlexibleWrite( fp, g_a );
で g_a の型が char なら、1 バイト、int なら 4 バイトの書き込みが行われる
という書き方は、好きな人もいるらしいが、不安定で見つけにくいバグの原因に
なりがちなので、推奨されない。
>(そうしたいと思ってた人は多かったが言語機能が充分に噛み合ってなかった。)
しかし、C言語の算術定数の場合、整数、float、double が
定数自体の書き方で区別が出来るようになっているから、それほど
欲しいとは思わなかった。
それに、定数の型が char と int で全く動作が変わってしまうような
プログラムは、そもそも推奨されないというか、バグの元になる。
例えば、FILE *fp; に対して、
FlexibleWrite( fp, g_a );
で g_a の型が char なら、1 バイト、int なら 4 バイトの書き込みが行われる
という書き方は、好きな人もいるらしいが、不安定で見つけにくいバグの原因に
なりがちなので、推奨されない。
9デフォルトの名無しさん (ワッチョイ 8101-ma3r)
2026/01/29(木) 18:21:44.75ID:7sXa6UKh010デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 00:10:33.51ID:Bxxvh+lXM >>9
1. 「内部リンケージ」のグローバル変数は、その翻訳単位 A に
のみにローカルな変数の事である。
2. xxx.h に書くグローバル変数は、複数の翻訳単位で
共有されるものを書くのが基本。
なぜなら、翻訳単位 A だけに必要な情報であるならば、
A のソースファイル a.cpp に書けばいいから。
1. 「内部リンケージ」のグローバル変数は、その翻訳単位 A に
のみにローカルな変数の事である。
2. xxx.h に書くグローバル変数は、複数の翻訳単位で
共有されるものを書くのが基本。
なぜなら、翻訳単位 A だけに必要な情報であるならば、
A のソースファイル a.cpp に書けばいいから。
11デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 00:26:25.98ID:Bxxvh+lXM >>10
(xxx.h)
static int s_a = 5; //内部リンケージのグローバル変数!!!
としておいて、
(t1.cpp)
#include "xxx.h"
・・・
(t2.cpp)
#include "xxx.h"
・・・
(t3.cpp)
#include "xxx.h"
・・・
と書いたとすると、これは、
[続く]
(xxx.h)
static int s_a = 5; //内部リンケージのグローバル変数!!!
としておいて、
(t1.cpp)
#include "xxx.h"
・・・
(t2.cpp)
#include "xxx.h"
・・・
(t3.cpp)
#include "xxx.h"
・・・
と書いたとすると、これは、
[続く]
12デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 00:27:18.38ID:Bxxvh+lXM >>11
[続き]
(t1.cpp)
static int s_a = 5;
・・・
(t2.cpp)
static int s_a = 5;
・・・
(t3.cpp)
static int s_a = 5;
・・・
と書いたのと同じ。
これだと、「5」を初期値に持つ4バイトの領域が、3つ分確保されてしま
うので、xxx.exe は、12バイトの領域が含まれてしまうことになる。
それならいっそう、static 属性を付けず、
(xxx.h)
extern int g_a; //定義なしの宣言
とし、t1.cpp、t2.cpp、t3.cpp のどれかひとつのファイルで、
int g_a = 5;
と書いた方が効率的。そうすれば、xxx.exe では、4バイトしか
消費しないで済むから。
[続き]
(t1.cpp)
static int s_a = 5;
・・・
(t2.cpp)
static int s_a = 5;
・・・
(t3.cpp)
static int s_a = 5;
・・・
と書いたのと同じ。
これだと、「5」を初期値に持つ4バイトの領域が、3つ分確保されてしま
うので、xxx.exe は、12バイトの領域が含まれてしまうことになる。
それならいっそう、static 属性を付けず、
(xxx.h)
extern int g_a; //定義なしの宣言
とし、t1.cpp、t2.cpp、t3.cpp のどれかひとつのファイルで、
int g_a = 5;
と書いた方が効率的。そうすれば、xxx.exe では、4バイトしか
消費しないで済むから。
13デフォルトの名無しさん (ワッチョイ 6107-dr35)
2026/01/30(金) 01:00:19.86ID:pYms0bIf0 selectany使いの俺、低見の見物
14デフォルトの名無しさん (ワッチョイ 8101-ma3r)
2026/01/30(金) 01:50:20.70ID:qpG5Mp2u015デフォルトの名無しさん (ワッチョイ 9e3f-BbTi)
2026/01/30(金) 03:47:22.30ID:CPUPz1Lh016はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/30(金) 08:43:46.92ID:DcZwhPHt0 >>10
それが「噛み合ってない」と述べた内訳のひとつ。
C++ の仕組みでは各翻訳単位でのコンパイルが完了してからリンクするというフェイズの分け方が解釈に強力に癒着していて変えられないので変数を定数式として使うためには定義である必要がある。
他の翻訳単位に定義がある変数が定数式になることはない。
この前提では内容が同じであってもそれぞれの翻訳単位で定義する必要が生じる。
>>12
が、それぞれの翻訳単位で定義しても変更されることがないことがなくアドレスを使うこともない変数は最適化でほぼ消えることをあてにして良い。
むしろ const な変数を外部リンケージにすると翻訳単位の中だけでは消せるはずのものを (他の翻訳単位で使う可能性があるから) 消せないということが起こって不利になる。
後から導入されたインライン変数は定義が複数あってもよく、しかも他の翻訳単位にある定義と統合されてひとつの実体を持つ (つまり全て同じアドレスを持つ) ことを保証するということで楽な運用を出来るようにした。
C++ のインライン関数の考え方をそのまま変数に延長しているのでわかりやすい。
ただ、オブジェクトの実体がどこかの翻訳単位に属して他の翻訳単位からはそれを参照するという (C から引き継いだ) 考え方はぶっ壊れてる。
テンプレートの導入の時点でもうぶっ壊れてるけど。
それが「噛み合ってない」と述べた内訳のひとつ。
C++ の仕組みでは各翻訳単位でのコンパイルが完了してからリンクするというフェイズの分け方が解釈に強力に癒着していて変えられないので変数を定数式として使うためには定義である必要がある。
他の翻訳単位に定義がある変数が定数式になることはない。
この前提では内容が同じであってもそれぞれの翻訳単位で定義する必要が生じる。
>>12
が、それぞれの翻訳単位で定義しても変更されることがないことがなくアドレスを使うこともない変数は最適化でほぼ消えることをあてにして良い。
むしろ const な変数を外部リンケージにすると翻訳単位の中だけでは消せるはずのものを (他の翻訳単位で使う可能性があるから) 消せないということが起こって不利になる。
後から導入されたインライン変数は定義が複数あってもよく、しかも他の翻訳単位にある定義と統合されてひとつの実体を持つ (つまり全て同じアドレスを持つ) ことを保証するということで楽な運用を出来るようにした。
C++ のインライン関数の考え方をそのまま変数に延長しているのでわかりやすい。
ただ、オブジェクトの実体がどこかの翻訳単位に属して他の翻訳単位からはそれを参照するという (C から引き継いだ) 考え方はぶっ壊れてる。
テンプレートの導入の時点でもうぶっ壊れてるけど。
17デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 10:33:46.55ID:bR/FJ/XSM ところで、関数の戻り値のところに書く場合の constexpr は、
関数の内部のコンパイルの仕方まで変更してまうので、
const と書いた場合とは働きが明確に異なるけど、
グローバル変数の場合、型名の直前に書く場合は、
const と constexpr でどんな違いが有るんかいな?
関数の内部のコンパイルの仕方まで変更してまうので、
const と書いた場合とは働きが明確に異なるけど、
グローバル変数の場合、型名の直前に書く場合は、
const と constexpr でどんな違いが有るんかいな?
18デフォルトの名無しさん (ワッチョイ 69f0-5F09)
2026/01/30(金) 10:43:22.05ID:chCVP8PL0 constexprは計算式が書いてあればコンパイラが解いて計算結果を返す。constexprの即値を返す関数のみ計算が可能。
constは、単に値を変更できないことを表す。本来の意味は定数でもなんでもない。リードオンリーという意味。
constは、単に値を変更できないことを表す。本来の意味は定数でもなんでもない。リードオンリーという意味。
19デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 10:51:53.45ID:bR/FJ/XSM >>18
なお、global 変数において、constexpr でなくても、
const int g_a = 初期値;
と書いてあれば、初期値部分に関数呼び出しや変数が書いて
無い限りは、定数になるまで計算されている。
この場合に限り、g_a マクロの様に振舞える。
なお、global 変数において、constexpr でなくても、
const int g_a = 初期値;
と書いてあれば、初期値部分に関数呼び出しや変数が書いて
無い限りは、定数になるまで計算されている。
この場合に限り、g_a マクロの様に振舞える。
20はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/30(金) 11:45:47.16ID:DcZwhPHt0 >>17
const 付きの変数は初期化子が定数式のときは定数式として使える規則なのでそのときは constexpr との差はほとんどない。
そうでない場合 (初期化子が定数式でない場合) は const は単に書き換えられない変数というだけで定数式としては使えなくなる。
constexpr は初期化子が常に定数式であることを要求し、そうでない場合はエラー。
(より厳密な用語で言えば不適格。)
あとはシンタクス的な違いがちょっとある。
const int* p = &a;
と書いたときは p が指す先の型が const int で p 自体には const 性はない。
constexpr int* p = &a;
と書いた場合には p が指す先は int で、 constexpr は p 自体にかかっているという解釈になる。
>>19
C++ にグローバル変数なんて分類はないし、関数スコープでも const 付き変数の初期化子が定数式だったら定数式として使える。
再度強調しておくがマクロと同列に考えるのはやめてくれ。
字句的な規則と式評価の規則は全く別のレイヤなので結果的な動作が似て見えたとしてもメカニズムの話には持ち込むべきではない。
const 付きの変数は初期化子が定数式のときは定数式として使える規則なのでそのときは constexpr との差はほとんどない。
そうでない場合 (初期化子が定数式でない場合) は const は単に書き換えられない変数というだけで定数式としては使えなくなる。
constexpr は初期化子が常に定数式であることを要求し、そうでない場合はエラー。
(より厳密な用語で言えば不適格。)
あとはシンタクス的な違いがちょっとある。
const int* p = &a;
と書いたときは p が指す先の型が const int で p 自体には const 性はない。
constexpr int* p = &a;
と書いた場合には p が指す先は int で、 constexpr は p 自体にかかっているという解釈になる。
>>19
C++ にグローバル変数なんて分類はないし、関数スコープでも const 付き変数の初期化子が定数式だったら定数式として使える。
再度強調しておくがマクロと同列に考えるのはやめてくれ。
字句的な規則と式評価の規則は全く別のレイヤなので結果的な動作が似て見えたとしてもメカニズムの話には持ち込むべきではない。
21デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 12:29:33.70ID:YBozMkZgM >>20
>C++ にグローバル変数なんて分類はないし
C++ の Draft では、余り使われて無い気がするが、
昔から習慣的に global variable と言われている
ものを C++ Draft 的に言うとどうなるとあなたは考える?
なお、関連するものとして、
namespace scope、global scope という言葉がある。
>C++ にグローバル変数なんて分類はないし
C++ の Draft では、余り使われて無い気がするが、
昔から習慣的に global variable と言われている
ものを C++ Draft 的に言うとどうなるとあなたは考える?
なお、関連するものとして、
namespace scope、global scope という言葉がある。
22はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/30(金) 13:45:17.40ID:DcZwhPHt0 >>21
慣例も尊重はするけど伝わらなかったり曖昧だったりするなら話は変わってくる。
慣例はそんなに統一されてないんだよ……
この場合は推察は出来るからあまり強くは言わないけど気を付けてねくらいの感じ。
グローバル変数という言葉は余り使われていないというか、仕様の中ではスコープの分類とは違う意味で使われてる。
明瞭な用語の定義はないものの文脈的には思わぬところで変更されるような (つまり公開範囲やアクセス経路の設計に失敗している) 変数くらいの意味で使われてる。
翻訳単位の外に公開されているようなものに限ってグローバルと称している事例などもあるし、その定義ならクラススコープの public で static なデータメンバはグローバル変数と読んでもおかしくないことになる。
慣例も尊重はするけど伝わらなかったり曖昧だったりするなら話は変わってくる。
慣例はそんなに統一されてないんだよ……
この場合は推察は出来るからあまり強くは言わないけど気を付けてねくらいの感じ。
グローバル変数という言葉は余り使われていないというか、仕様の中ではスコープの分類とは違う意味で使われてる。
明瞭な用語の定義はないものの文脈的には思わぬところで変更されるような (つまり公開範囲やアクセス経路の設計に失敗している) 変数くらいの意味で使われてる。
翻訳単位の外に公開されているようなものに限ってグローバルと称している事例などもあるし、その定義ならクラススコープの public で static なデータメンバはグローバル変数と読んでもおかしくないことになる。
23デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 14:10:45.08ID:YBozMkZgM >>22
むしろ、namespace scope という言葉が逆に話を複雑にすることもある
名前なし namespace の scope と global scope が別の概念であったりもする。
複雑さは異常なくらいで、namespace、scope、life time の言葉も非常に
微妙なニュアンスや定義の差があったりするが、共通する部分も有り
そもそも C++ Draft が良い書き方なのかにも疑問が持たれている。
むしろ、namespace scope という言葉が逆に話を複雑にすることもある
名前なし namespace の scope と global scope が別の概念であったりもする。
複雑さは異常なくらいで、namespace、scope、life time の言葉も非常に
微妙なニュアンスや定義の差があったりするが、共通する部分も有り
そもそも C++ Draft が良い書き方なのかにも疑問が持たれている。
24デフォルトの名無しさん (JP 0H12-Bm+i)
2026/01/30(金) 14:26:25.16ID:VqKwakPAH >B.cでg_aにアクセスする必要があるときにはA.hをincludeする
>絶対にB.cにextern const int g_a;と書いてはいけない
そんな作法無い
>絶対にB.cにextern const int g_a;と書いてはいけない
そんな作法無い
25デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 14:35:58.59ID:YBozMkZgM26デフォルトの名無しさん (ワッチョイ 92ad-BER0)
2026/01/30(金) 14:41:35.01ID:1IzfVQ9H0 なんつーか、関係ない話だけどさ
最初に疑問を投げた人が、おそらく回答したであろう人のレスに「なお、」って付け加えるのって凄く変に思うんだよな
最初に疑問を投げた人が、おそらく回答したであろう人のレスに「なお、」って付け加えるのって凄く変に思うんだよな
27はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/30(金) 14:43:02.51ID:DcZwhPHt0 >>23
global scope は global namespace scope の別名で、 namespace scope の一種。 (包含関係)
https://timsong-cpp.github.io/cppwp/n3337/basic.scope#namespace-3
多少の特別扱いはあるけど別の概念というわけではないよ。
仕様書が分かり難いのは C++ が分かり難いからで、 C++ が C++ である限りどう表現したって分かりやすくはならない。
そんなのは参考書で補えというのが委員会の立場。
というか普通は単なるユーザが仕様書をガッツリとは読まなないのが普通だし、わかりやすいことよりも曖昧さがないことが仕様書としてあるべき姿でしょ。
global scope は global namespace scope の別名で、 namespace scope の一種。 (包含関係)
https://timsong-cpp.github.io/cppwp/n3337/basic.scope#namespace-3
多少の特別扱いはあるけど別の概念というわけではないよ。
仕様書が分かり難いのは C++ が分かり難いからで、 C++ が C++ である限りどう表現したって分かりやすくはならない。
そんなのは参考書で補えというのが委員会の立場。
というか普通は単なるユーザが仕様書をガッツリとは読まなないのが普通だし、わかりやすいことよりも曖昧さがないことが仕様書としてあるべき姿でしょ。
28デフォルトの名無しさん (ワッチョイ 5ed6-wsWs)
2026/01/30(金) 15:20:00.26ID:Lh5nXkOq0 最後にどなたかまとめてくれると嬉しい
29デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 15:25:23.73ID:YBozMkZgM >>27
>global scope は global namespace scope の別名で、 namespace scope の一種。 (包含関係)
これは正しいが、
「名前なし namespace の scope」と「global scope」は別の概念
ということはまた正しい。
>global scope は global namespace scope の別名で、 namespace scope の一種。 (包含関係)
これは正しいが、
「名前なし namespace の scope」と「global scope」は別の概念
ということはまた正しい。
30デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 15:28:19.22ID:YBozMkZgM >>27
>わかりやすいことよりも曖昧さがないことが仕様書としてあるべき姿でしょ。
定評のある C++ の本を書いている人が、C++ の Draft が仕様書として曖昧さが
無い、とは思ってないようだったが。
少なくとも、彼が自分で呼んでも不明瞭な事が一杯有った、ので、
詳しそうな人に沢山の質問をしたと書いていた。
つまり、仕様書を読んだだけでは理解できないようになっている
可能性が高い。
>わかりやすいことよりも曖昧さがないことが仕様書としてあるべき姿でしょ。
定評のある C++ の本を書いている人が、C++ の Draft が仕様書として曖昧さが
無い、とは思ってないようだったが。
少なくとも、彼が自分で呼んでも不明瞭な事が一杯有った、ので、
詳しそうな人に沢山の質問をしたと書いていた。
つまり、仕様書を読んだだけでは理解できないようになっている
可能性が高い。
31デフォルトの名無しさん (ブーイモ MMb2-VviL)
2026/01/30(金) 15:36:43.24ID:F1IQee9fM 定数定義はenum使う派いる?
32はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/30(金) 16:07:38.88ID:DcZwhPHt0 >>30
曖昧さが無いようにという指針が実現できていないのは事実だよ。
曖昧さに関する欠陥報告はたくさん出てる。
ただそれは批判したところでどうにもならん。
正確な記述のために努力してなお曖昧なのでこれ以上にできることがあるわけではない。
曖昧さが無いようにという指針が実現できていないのは事実だよ。
曖昧さに関する欠陥報告はたくさん出てる。
ただそれは批判したところでどうにもならん。
正確な記述のために努力してなお曖昧なのでこれ以上にできることがあるわけではない。
33はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/30(金) 16:25:14.88ID:DcZwhPHt0 >>31
enum が妥当な場合、選択肢として複数の整数がありうるような場合ならもちろん enum を使うけど……
特定の数値のためにひとつひとつ異なる列挙型を作るという意味ならやらないな。
C++ の列挙子は個々の列挙型なので (underlying type とある程度の互換性はあるものの) 型を本来あるべきものに出来ない。
統合開発環境で型を表示させたときに意味のない列挙型が出てくるとはかなり嫌な感じがする。
enum が妥当な場合、選択肢として複数の整数がありうるような場合ならもちろん enum を使うけど……
特定の数値のためにひとつひとつ異なる列挙型を作るという意味ならやらないな。
C++ の列挙子は個々の列挙型なので (underlying type とある程度の互換性はあるものの) 型を本来あるべきものに出来ない。
統合開発環境で型を表示させたときに意味のない列挙型が出てくるとはかなり嫌な感じがする。
34デフォルトの名無しさん (ワッチョイ 69f0-5F09)
2026/01/30(金) 16:37:02.25ID:chCVP8PL0 constexprは、他に条件文のクエリとしても有効
if constexpr ( 真偽の定数式 ) {
真ならコード生成されるが、偽ならコード生成されない
}else {
偽ならコード生成されるが、真ならコード生成されない
}
if constexpr ( 真偽の定数式 ) {
真ならコード生成されるが、偽ならコード生成されない
}else {
偽ならコード生成されるが、真ならコード生成されない
}
35デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 16:38:24.89ID:YBozMkZgM36はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 71dd-3e1k)
2026/01/30(金) 17:03:37.59ID:ExkhX6LU0 >>35
主張は何? 何が言いたいのかわからない。
主張は何? 何が言いたいのかわからない。
37デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 17:25:43.44ID:YBozMkZgM >>36
C++ Draft が分かりづらいのは、曖昧さの除去に役立ってない
C++ Draft が分かりづらいのは、曖昧さの除去に役立ってない
38はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 71dd-3e1k)
2026/01/30(金) 17:30:50.02ID:ExkhX6LU0 >>37
現状をそう解釈したとして、その上でどうすべきと考えているのかを明瞭にして。
現状をそう解釈したとして、その上でどうすべきと考えているのかを明瞭にして。
39デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 17:35:29.73ID:YBozMkZgM40デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 17:53:13.76ID:YBozMkZgM ある委員会がありました。その人達が決めた仕様が全体的に
おかしく、分かりにくく、評判も時と共にどんどん悪くなっていきました。
「それを直すことは人類に役立つから直すべき」
などと考える人がいますが、そうすると、委員会が得をしてえらそうに振舞う
だけで、画期的な良い提案をした人には何のメリットもありません。
おかしく、分かりにくく、評判も時と共にどんどん悪くなっていきました。
「それを直すことは人類に役立つから直すべき」
などと考える人がいますが、そうすると、委員会が得をしてえらそうに振舞う
だけで、画期的な良い提案をした人には何のメリットもありません。
41デフォルトの名無しさん (ブーイモ MMb2-VviL)
2026/01/30(金) 18:11:04.87ID:F1IQee9fM ガイキチはほっとこ
42デフォルトの名無しさん (ワッチョイ 7570-PNlu)
2026/01/30(金) 18:30:39.90ID:CxLU3aXx0 仕様で盛り上がるなんていつぞやのrustスレ
43はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 71dd-3e1k)
2026/01/30(金) 18:31:08.85ID:ExkhX6LU044デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 19:09:40.19ID:YBozMkZgM45デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/30(金) 19:10:28.22ID:YBozMkZgM46デフォルトの名無しさん (ブーイモ MMb2-VviL)
2026/01/30(金) 19:18:26.73ID:F1IQee9fM ずいぶんふわっとした内容なことで
47デフォルトの名無しさん (ワッチョイ 5ea1-cO42)
2026/01/31(土) 04:22:55.46ID:2I2AM33H0 C言語だと単にconst int foo = 10; と書いたら外部リンケージになるため
複数の箇所からインクルードされるヘッダファイルbar.hにそれを書く場合は
extern const int foo;
とせねばリンカーか何かに起こられる。(もちろん=10は.c の方に const int foo = 10; と定義を書かねばならない
従って、C++とから
extern "C" {
#inclue "bar.h"
}
としたときにbar.hにexternの無いconst int宣言が含まれることは事実上無いからでextern "C" の曖昧さの問題は事実上無いハズ……
それよかむしろ関数の宣言のexternを省略したやつをextern "C" { } で囲った場合どうーなちゃうの?!
と言うのが疑問ではある(Visual Studioだと経験上問題なさげ……
複数の箇所からインクルードされるヘッダファイルbar.hにそれを書く場合は
extern const int foo;
とせねばリンカーか何かに起こられる。(もちろん=10は.c の方に const int foo = 10; と定義を書かねばならない
従って、C++とから
extern "C" {
#inclue "bar.h"
}
としたときにbar.hにexternの無いconst int宣言が含まれることは事実上無いからでextern "C" の曖昧さの問題は事実上無いハズ……
それよかむしろ関数の宣言のexternを省略したやつをextern "C" { } で囲った場合どうーなちゃうの?!
と言うのが疑問ではある(Visual Studioだと経験上問題なさげ……
48デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/31(土) 10:20:31.67ID:M2GZ7tW4M >>47
>それよかむしろ関数の宣言のexternを省略したやつをextern "C" { } で囲った場合どうーなちゃうの?!
「関数プロトタイプ宣言」の場合、
extern 書いても書かなくても同じはずだが。
>それよかむしろ関数の宣言のexternを省略したやつをextern "C" { } で囲った場合どうーなちゃうの?!
「関数プロトタイプ宣言」の場合、
extern 書いても書かなくても同じはずだが。
49デフォルトの名無しさん (ブーイモ MMb2-BZjK)
2026/01/31(土) 11:05:46.93ID:ju7CGQayM まだやってんのか
初学者ならともかく暫く書いていたら
自然と身に付くことやろw
初学者ならともかく暫く書いていたら
自然と身に付くことやろw
50デフォルトの名無しさん (ワッチョイ 0104-DqSr)
2026/01/31(土) 12:01:19.45ID:A/7Hjx4l051デフォルトの名無しさん (ワッチョイ 5ea1-cO42)
2026/01/31(土) 15:12:43.19ID:2I2AM33H0 >>48
前スレで
>つまり、extern "C" の直後を中括弧で囲ってないものは、extern 宣言であるが、
>extern "C" の直後を中括弧で囲っていて、中に extern で修飾してないものは、
>(原則として)「狭義の定義」である。
と書いたあった、
すわなちextern "C" { } のブロック内に
externを省略した(extern で修飾してない)関数宣言がある場合、
>(原則として)「狭義の定義」である。
に該当しそう(((( ;゚Д゚)))ガクガクブルブル
前スレで
>つまり、extern "C" の直後を中括弧で囲ってないものは、extern 宣言であるが、
>extern "C" の直後を中括弧で囲っていて、中に extern で修飾してないものは、
>(原則として)「狭義の定義」である。
と書いたあった、
すわなちextern "C" { } のブロック内に
externを省略した(extern で修飾してない)関数宣言がある場合、
>(原則として)「狭義の定義」である。
に該当しそう(((( ;゚Д゚)))ガクガクブルブル
52デフォルトの名無しさん (ワッチョイ 5ea1-cO42)
2026/01/31(土) 15:12:44.53ID:2I2AM33H0 >>48
前スレで
>つまり、extern "C" の直後を中括弧で囲ってないものは、extern 宣言であるが、
>extern "C" の直後を中括弧で囲っていて、中に extern で修飾してないものは、
>(原則として)「狭義の定義」である。
と書いたあった、
すわなちextern "C" { } のブロック内に
externを省略した(extern で修飾してない)関数宣言がある場合、
>(原則として)「狭義の定義」である。
に該当しそう(((( ;゚Д゚)))ガクガクブルブル
前スレで
>つまり、extern "C" の直後を中括弧で囲ってないものは、extern 宣言であるが、
>extern "C" の直後を中括弧で囲っていて、中に extern で修飾してないものは、
>(原則として)「狭義の定義」である。
と書いたあった、
すわなちextern "C" { } のブロック内に
externを省略した(extern で修飾してない)関数宣言がある場合、
>(原則として)「狭義の定義」である。
に該当しそう(((( ;゚Д゚)))ガクガクブルブル
53デフォルトの名無しさん (ワッチョイ 5ea1-cO42)
2026/01/31(土) 15:14:23.42ID:2I2AM33H0 大事なことなので2回言いました
大事なことなので2回言いました
大事なことなので2回言いました
54はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-Z6i/)
2026/01/31(土) 15:24:25.64ID:chqzbMKW0 関数の場合と変数の場合で意味が違ったりするという一貫性の無さも C++ の持ち味
55デフォルトの名無しさん (オイコラミネオ MMdd-IRQz)
2026/01/31(土) 15:33:33.02ID:xbiMgchEM >>51
それは変数の場合。
関数の(プロトタイプ)宣言の場合は、問題にならない。
なぜなら、static 修飾した同名の関数と混在して宣言するなどの
特殊なことをしない限りは、
extern void func();
と
void func();
は、同じ扱いになるから。
それは変数の場合。
関数の(プロトタイプ)宣言の場合は、問題にならない。
なぜなら、static 修飾した同名の関数と混在して宣言するなどの
特殊なことをしない限りは、
extern void func();
と
void func();
は、同じ扱いになるから。
56デフォルトの名無しさん (スップ Sdb2-b5qU)
2026/01/31(土) 16:46:04.67ID:gRAiPVlwd バカが揃うと一気にスレが進むんだよね
たまにこういうタイミングがある
しかも抑えが効かないのかきまって長文
たまにこういうタイミングがある
しかも抑えが効かないのかきまって長文
57デフォルトの名無しさん (ワッチョイ 5ea1-cO42)
2026/01/31(土) 17:08:18.07ID:2I2AM33H0 心しますサーセンwwwwwwwwwwwwwwww
58デフォルトの名無しさん (ワッチョイ b288-BbTi)
2026/01/31(土) 21:46:14.29ID:gdR5TKrU0 このスレだとだいたいオイコラミネオかごめ;;の人やな
59デフォルトの名無しさん (ワッチョイ 5ea1-cO42)
2026/01/31(土) 23:18:39.52ID:2I2AM33H0 いやそこらのミジンコより目立ってしまってスマンコ(キリ
60デフォルトの名無しさん (ワッチョイ 4df8-19gu)
2026/02/01(日) 09:30:28.20ID:X3l3PQDV0 いや、相談の範疇ならスレタイ通りだろ。
変な主張始めたらスレ違いカエレだけど。
変な主張始めたらスレ違いカエレだけど。
61デフォルトの名無しさん (オッペケ Sr41-VnUE)
2026/02/01(日) 11:51:43.24ID:ThGRad1xr いまさら人に聞けない
酒席とかでネタにするために、経緯を押さえたい話
C#のTAPと、C++のコルーチン。偶然、ほぼ同時期に学ぶことになって、うん、だいたい一緒。って思ってる
これって結局、投票とかで、C#の書き方でいいよもう、ってなったってこと?
それとも、両方に共通の祖先とか居る?
酒席とかでネタにするために、経緯を押さえたい話
C#のTAPと、C++のコルーチン。偶然、ほぼ同時期に学ぶことになって、うん、だいたい一緒。って思ってる
これって結局、投票とかで、C#の書き方でいいよもう、ってなったってこと?
それとも、両方に共通の祖先とか居る?
62はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-Z6J8)
2026/02/01(日) 13:12:31.29ID:d7kS7Cwc063デフォルトの名無しさん (オイコラミネオ MMab-uFzq)
2026/02/01(日) 13:47:41.49ID:PoLs1CKYM >>62
ずいぶん詳しいんだね
ずいぶん詳しいんだね
64はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-Z6J8)
2026/02/02(月) 10:17:23.35ID:K9nGdm11065デフォルトの名無しさん (アウアウウー Sa29-HBIu)
2026/02/02(月) 18:00:38.10ID:ZPnCKFkTa わりと昔からちょいちょいこのスレは見てるが、はちみつはわりとちゃんとした知識で解答しとる印象ある
趣味人でプロとしてはC++のコーディングはしてないと言ってるが、ホンマかいな?と思うぐらいにはちゃんとしてる
趣味人でプロとしてはC++のコーディングはしてないと言ってるが、ホンマかいな?と思うぐらいにはちゃんとしてる
66デフォルトの名無しさん (ワッチョイ 9b90-E3cC)
2026/02/02(月) 19:13:29.58ID:5Ct0wTtc0 はちみつの中の人は江添だからな
というボケを考えたがさすがにキャラが違いすぎか
というボケを考えたがさすがにキャラが違いすぎか
67デフォルトの名無しさん (ワッチョイ 2302-ayZK)
2026/02/02(月) 20:51:17.33ID:MTHjQakI068デフォルトの名無しさん (ワッチョイ 4bd6-Iwrj)
2026/02/02(月) 22:58:30.24ID:XsTyxrek0 江添さんの本で勉強しました。ここにいるの?
69デフォルトの名無しさん (ワッチョイ 4d7c-IhCA)
2026/02/03(火) 07:12:58.79ID:LeQRRChy0 もう人間がプログラミング言語の仕様なんか意識する時代じゃないって言ってたよ
70デフォルトの名無しさん (オッペケ Sr41-VnUE)
2026/02/03(火) 07:44:49.32ID:H0S3M+nBr そうだけど気が早いw 移行期の間は勉強しとくと役に立つ
71はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-Z6J8)
2026/02/03(火) 08:59:50.61ID:3l7bFFEG072デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/03(火) 10:14:08.75ID:DGQwG7Ey0 たとえ規約書を完全に読みこなし、完全無欠に言語を操れるとしても、
俺らの駄文愚問に向き合って lex&parse して、推定・回答までしてくれるとは限らない
自分で学べ、さもなくは去れみたいなカルチャのC++ならなおのこと
はちみつたんのような御仁を、我々中級者は大事にすべき
初級者は…ありがたみがわからんか…。
俺らの駄文愚問に向き合って lex&parse して、推定・回答までしてくれるとは限らない
自分で学べ、さもなくは去れみたいなカルチャのC++ならなおのこと
はちみつたんのような御仁を、我々中級者は大事にすべき
初級者は…ありがたみがわからんか…。
73デフォルトの名無しさん (スフッ Sd43-WtQD)
2026/02/03(火) 11:01:49.24ID:iuWGrVubd きもいわ
74デフォルトの名無しさん (ワッチョイ 9d18-pigu)
2026/02/03(火) 11:08:40.70ID:xllFvPwA0 他の言語スレと比べてみるとよく分かる
有識者のいないスレは閑散としてるからね
C++スレは恵まれてるよ
有識者のいないスレは閑散としてるからね
C++スレは恵まれてるよ
75デフォルトの名無しさん (アウアウウー Sa29-lnpu)
2026/02/03(火) 11:52:24.53ID:H4cRTHa/a 八光さんのhageは自分で剃ってるのかどうかは気になる
お薬のせい?
お薬のせい?
76デフォルトの名無しさん (ワッチョイ 2302-F92t)
2026/02/03(火) 15:51:51.64ID:yko8fGlg0 スレ潰しの荒らしはスルーしようぜ
77デフォルトの名無しさん (ワッチョイ e35f-rSJd)
2026/02/04(水) 11:36:21.08ID:poajZd7m0 有識者っていうか質問者の代わりにしっぽ振って調べに行く手動クローラみたいな感じよ
体のいい初心者にはいいように使われて実務者からはバカにされてる
体のいい初心者にはいいように使われて実務者からはバカにされてる
78デフォルトの名無しさん (ワッチョイ 4346-19gu)
2026/02/04(水) 12:28:12.98ID:3m9ejRBE0 「相談室」スレなんだから、初心者の質問に答えるのは妥当じゃないかな。
79デフォルトの名無しさん (ワッチョイ 9d02-pigu)
2026/02/04(水) 13:36:28.09ID:fXUySTwF080デフォルトの名無しさん (ワッチョイ 9bf5-AWLw)
2026/02/04(水) 16:40:22.17ID:geH/6/Tr0 実務者ってMFCでUI作ってる人みたいなの?
81デフォルトの名無しさん (オイコラミネオ MMab-uFzq)
2026/02/04(水) 18:16:44.72ID:2OgvshiTM Linuxでも、WineでWin32やMFCのアプリは動くけど、使っている
フレームワークや技術が新しくなればなるほど、動きにくくなる
フレームワークや技術が新しくなればなるほど、動きにくくなる
82デフォルトの名無しさん (ワッチョイ 2501-jKNx)
2026/02/04(水) 21:38:29.77ID:ATChicRZ083デフォルトの名無しさん (アウアウウー Sa29-lnpu)
2026/02/04(水) 22:17:16.50ID:z+Wn9TMIa MFCでUI造ってると指摘すると馬鹿にしたことになるのか?
84デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/05(木) 07:50:24.52ID:jOvU5Odi0 デバドラのコンパネなので、MFCでUI造れ。と言われたら、粛々と作る。それが実務者
85デフォルトの名無しさん (ワッチョイ 9b8d-AWLw)
2026/02/05(木) 08:55:58.41ID:qvfWxJUj0 デバドラのコンパネなので
理由になってない
ことがわからないんだよなこのジジイは
理由になってない
ことがわからないんだよなこのジジイは
86デフォルトの名無しさん (アウアウウー Sa29-pigu)
2026/02/05(木) 10:24:54.51ID:2XNFlf4Va 以前はデバイスドライバーのインストーラーで100MB超えてたりすると嫌だなーって感じた
たぶん、.NETでユーティリティとか作ってたんじゃないかと思う
いまはデバイスドライバーで100MBとかあっても気にならない
作りやすいツールキットでUI作ってくれていいよ
たぶん、.NETでユーティリティとか作ってたんじゃないかと思う
いまはデバイスドライバーで100MBとかあっても気にならない
作りやすいツールキットでUI作ってくれていいよ
87デフォルトの名無しさん (オイコラミネオ MM49-uFzq)
2026/02/05(木) 11:02:05.16ID:P9Ruml2FM >>86
C#は、「自己完結型」にすると、*.exe のファイル中、または、同じ
ディレクトリの中に *.dll を同梱することになり、ユーザーに
配布するファイルのバイト数が、100MB を超えるらしいね。
C#は、「自己完結型」にすると、*.exe のファイル中、または、同じ
ディレクトリの中に *.dll を同梱することになり、ユーザーに
配布するファイルのバイト数が、100MB を超えるらしいね。
88デフォルトの名無しさん (ワッチョイ 4df6-lnpu)
2026/02/05(木) 11:04:51.55ID:KDeSa5ll0 DLLって本来はアプリ側が巨大にならないようにOSが提供する名目だったのに
依存性爆発のDLL同梱しないといけない馬鹿アプリが大量生産されて
どうしてこうなった
依存性爆発のDLL同梱しないといけない馬鹿アプリが大量生産されて
どうしてこうなった
89デフォルトの名無しさん (スププ Sd43-WtQD)
2026/02/05(木) 11:08:33.00ID:OGW1VDx9d いつもMFCのことはバカにしてるけど
MFCを使って開発してる人のことを
バカにしてる訳じゃ無いんだ
判ってくれ
MFCを使って開発してる人のことを
バカにしてる訳じゃ無いんだ
判ってくれ
90デフォルトの名無しさん (アウアウウー Sa29-pigu)
2026/02/05(木) 12:28:12.22ID:2XNFlf4Va >>88
DLLやランタイム同梱は歓迎だけどなー
昔は、vcruntime12入れてくれとか、.net3.5入れてくれとかあって面倒だった
依存関係まるごと全部入りでZIPを展開するだけで動かせるのは正義だよ
DLLやランタイム同梱は歓迎だけどなー
昔は、vcruntime12入れてくれとか、.net3.5入れてくれとかあって面倒だった
依存関係まるごと全部入りでZIPを展開するだけで動かせるのは正義だよ
91デフォルトの名無しさん (ワッチョイ f501-uGlI)
2026/02/05(木) 12:33:09.22ID:q0CeoxvW0 それって同一システム内に重複したDLLが散らばっているってこと?
92デフォルトの名無しさん (オイコラミネオ MM49-uFzq)
2026/02/05(木) 12:41:18.46ID:Msz/ntZbM そもそも、.NET の DLL って何種類くらいのバージョン(?)
があるんかいね? .Net Core とか .Net なんたら とか沢山
有って、その中で Version 数値も色々有るんだろうけども
があるんかいね? .Net Core とか .Net なんたら とか沢山
有って、その中で Version 数値も色々有るんだろうけども
93デフォルトの名無しさん (オイコラミネオ MM49-uFzq)
2026/02/05(木) 13:15:51.96ID:Msz/ntZbM94デフォルトの名無しさん (ワッチョイ 9d65-YiKw)
2026/02/05(木) 14:44:02.57ID:ZR/9hmKd0 おれネイティブはライブラリのみで使ってるわ
95デフォルトの名無しさん (ラクッペペ MM4b-SFFH)
2026/02/05(木) 15:40:53.78ID:NyeK8nyBM96デフォルトの名無しさん (オイコラミネオ MM49-uFzq)
2026/02/05(木) 16:07:09.76ID:Msz/ntZbM VSは、C/C++でも、CRT や MFC の DLL 版をリンクした場合、
*.exe の中に、どのバージョンの DLL が必要化の情報が
入っているらしい。MSVCR80.dll や MSVCP140.dll、msvcr100.dll
みたいな。だから、間違って動的リンクされる心配は無いらしい。
ただ、その DLL が見つからないと起動できない。
*.exe の中に、どのバージョンの DLL が必要化の情報が
入っているらしい。MSVCR80.dll や MSVCP140.dll、msvcr100.dll
みたいな。だから、間違って動的リンクされる心配は無いらしい。
ただ、その DLL が見つからないと起動できない。
97はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-Z6J8)
2026/02/05(木) 16:26:30.68ID:YN57lSUV0 今の Windows のインストーラ (MSI) は依存関係のあるコンポーネントが入って無ければ入れるような形にすることは出来る。
古い世代の人間はインストーラを全然信用しないから ZIP 版を落してきて適当なところに置くみたいなことをしちゃうんだよ。
「レジストリが汚れる」みたいなことを言ってる人がまだいる。
Windows の管理化に入ってるコンポーネントと入ってないコンポーネントが入り乱れてよくわからん環境が出来上がる。
かといって各アプリケーションのインストーラが本当にきちんと定義されてるかというとあまり信用できないのも本当なんだよな……
古い世代の人間はインストーラを全然信用しないから ZIP 版を落してきて適当なところに置くみたいなことをしちゃうんだよ。
「レジストリが汚れる」みたいなことを言ってる人がまだいる。
Windows の管理化に入ってるコンポーネントと入ってないコンポーネントが入り乱れてよくわからん環境が出来上がる。
かといって各アプリケーションのインストーラが本当にきちんと定義されてるかというとあまり信用できないのも本当なんだよな……
98デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/05(木) 17:34:21.10ID:jOvU5Odi0 msvcr/ucrt/mfc/atlは、システムが管理しているものは、WUの対象になるから、
まさかのセキュリティホールを突かれるリスクだの、ランタイムを責任もって更新する手間だのの分がラクになる
まさかのセキュリティホールを突かれるリスクだの、ランタイムを責任もって更新する手間だのの分がラクになる
99デフォルトの名無しさん (ブーイモ MM43-AWLw)
2026/02/05(木) 17:42:20.66ID:z3qOCzHUM もうd5
100デフォルトの名無しさん (オイコラミネオ MM49-uFzq)
2026/02/06(金) 00:01:58.73ID:HoR8cF32M MSVCR80.dll、MSVCR100.dll、MSVCP140.dll などを全部入れても
大した容量ではないはずなのに、OS には最初からは入ってない
のは、なんでなんだろうね?
大した容量ではないはずなのに、OS には最初からは入ってない
のは、なんでなんだろうね?
101デフォルトの名無しさん (ワッチョイ 95cf-As3n)
2026/02/06(金) 07:44:13.76ID:W74qwHEv0 >>88
その発想の延長上にdockerがあり、いまやごく当たり前
その発想の延長上にdockerがあり、いまやごく当たり前
102はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 15b0-0WMu)
2026/02/06(金) 09:50:35.84ID:Qy2h/jss0 >>100
同じ名前でも微修正された異なるものがある。
それらも含めてとなるとそこそこの分量になるし、修正が必要だったもの (問題があったもの) を残すのは良くないだろう。
過去のバージョンを際限なくメンテナンスというわけにもいかない。
本来なら最新版に合わせてアプリケーションを修正して欲しいに違いないが、古いバージョンのランタイムに依存し続ける選択をするならそれはアプリケーションかユーザーの責任でやれ (Windows は面倒を見ない) ということだと私は理解してる。
同じ名前でも微修正された異なるものがある。
それらも含めてとなるとそこそこの分量になるし、修正が必要だったもの (問題があったもの) を残すのは良くないだろう。
過去のバージョンを際限なくメンテナンスというわけにもいかない。
本来なら最新版に合わせてアプリケーションを修正して欲しいに違いないが、古いバージョンのランタイムに依存し続ける選択をするならそれはアプリケーションかユーザーの責任でやれ (Windows は面倒を見ない) ということだと私は理解してる。
103デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/06(金) 11:41:22.65ID:w8JkwYhH0 Microsoft Visual C++ Redistributable latest supported downloads
https://learn.microsoft.com/cpp/windows/latest-supported-vc-redist
https://learn.microsoft.com/cpp/windows/latest-supported-vc-redist
104デフォルトの名無しさん (ワッチョイ f501-uGlI)
2026/02/06(金) 13:19:22.49ID:hlWyHt0b0105はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-Z6J8)
2026/02/06(金) 14:31:30.96ID:OS2ysny00 Docker の役割は環境を定義することが本筋。
依存関係の解決に使うのも用途のひとつとして間違っているとは言い切れない。
だけど Docker コンテナに古いバージョンの依存関係を閉じ込めたままでずっと使い続けているのだとしたら間違った運用だと思う。
メンテナンスしなくて良いわけではない。
依存関係がどうこう言うくらいならなるべく全部を静的リンクしたほうが良くない? という思想が現代的潮流かも。
依存関係の解決に使うのも用途のひとつとして間違っているとは言い切れない。
だけど Docker コンテナに古いバージョンの依存関係を閉じ込めたままでずっと使い続けているのだとしたら間違った運用だと思う。
メンテナンスしなくて良いわけではない。
依存関係がどうこう言うくらいならなるべく全部を静的リンクしたほうが良くない? という思想が現代的潮流かも。
106デフォルトの名無しさん (ワッチョイ f501-uGlI)
2026/02/06(金) 14:57:28.94ID:hlWyHt0b0 確率されたシステムをよりセキュアに保つ方法を
ユーザのインストールの利便性と天秤に掛けて前者を捨てている
Docker流行ってるのは軽率だと思うよ
ユーザのインストールの利便性と天秤に掛けて前者を捨てている
Docker流行ってるのは軽率だと思うよ
107デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/06(金) 15:26:44.73ID:w8JkwYhH0 ちょっとバージョンが違うと、もう動かない、ってのが多発すると、防衛的に、そうなっちゃうのもわかるけど
そのためにテストってあるんじゃない?
と、テストをいまだ自信をもって書けない俺が思う
そのためにテストってあるんじゃない?
と、テストをいまだ自信をもって書けない俺が思う
108デフォルトの名無しさん (ブーイモ MM43-AWLw)
2026/02/06(金) 17:22:29.72ID:rc9CZ8oCM 今は動的ライブラリのメリットほとんどないよな
ストレージの節約は今や誤差レベル
バグフィクスが意味あるのは極一部でほぼ幻想、バイナリ互換を保つのは地獄
意味あるのはプラグインの機能拡張ぐらいか
ストレージの節約は今や誤差レベル
バグフィクスが意味あるのは極一部でほぼ幻想、バイナリ互換を保つのは地獄
意味あるのはプラグインの機能拡張ぐらいか
109デフォルトの名無しさん (ワッチョイ 4d7c-IhCA)
2026/02/06(金) 21:34:41.16ID:wi+ohStw0 CUDAみたいなギガサイズのライブラリもあるんですよ
110デフォルトの名無しさん (ワッチョイ 9b9a-AWLw)
2026/02/06(金) 22:03:13.28ID:rLfMUQhK0 フロッピーディスクでも使ってんの?
111デフォルトの名無しさん (ワッチョイ 2302-ayZK)
2026/02/06(金) 22:05:19.36ID:QGk+ZWjk0112デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/06(金) 22:33:41.35ID:w8JkwYhH0 あのCUDAとか、LLVMとかのクソデカさは、C++のtemplate のフリーダムさのせいだと信じてる
すっごい重複があるんだろうと
もしRustになったら、コンパクトになるように書き方が強制されるので、ずいぶん小さくなりそう
それでまた、C++が馬鹿にされるんだ
ああ、いやだいやだ もちろんC++派です
すっごい重複があるんだろうと
もしRustになったら、コンパクトになるように書き方が強制されるので、ずいぶん小さくなりそう
それでまた、C++が馬鹿にされるんだ
ああ、いやだいやだ もちろんC++派です
113デフォルトの名無しさん (オイコラミネオ MM49-uFzq)
2026/02/06(金) 23:34:24.28ID:lQT7eq5gM >>108
個人的には、開発中は DLL 版でビルドしている。
リリースする時だけは、static リンク版にするつもり。
Debug の *.exe のサイズが小さくなって良い気がするから。
複雑だけど。
個人的には、開発中は DLL 版でビルドしている。
リリースする時だけは、static リンク版にするつもり。
Debug の *.exe のサイズが小さくなって良い気がするから。
複雑だけど。
114はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1531-0WMu)
2026/02/06(金) 23:58:36.10ID:Qy2h/jss0 正しく書けていればそれでよいんだけど未定義を踏んでたりするのがコンパイルオプションの違いで顕現することもあるから開発中でもたまにはリリース用のビルドをしてテストを通したほうが良いよ。
工程の最後の方で問題が発見されるとしんどい。
工程の最後の方で問題が発見されるとしんどい。
115デフォルトの名無しさん (ワイーワ2 FF93-lnpu)
2026/02/07(土) 15:12:38.29ID:/kjFAAWeF 構造体や配列の初期値が0を期待したコードは書くべきではない(C++でも)
116デフォルトの名無しさん (ワッチョイ 9b9a-AWLw)
2026/02/07(土) 17:15:26.87ID:hrSBdeS50 この唐突な言いっぱなし何なの?w
staticなストレージなら規格で決まってる
OSのローダーの動作としても決まっている
そんなとこ疑うのはむしろ素人
staticなストレージなら規格で決まってる
OSのローダーの動作としても決まっている
そんなとこ疑うのはむしろ素人
117デフォルトの名無しさん (ワッチョイ 4bd6-Iwrj)
2026/02/07(土) 17:51:34.52ID:Qq1UdZ3k0 そなの?
int data[10]{0};
char *str{nullptr};
とか入れてるけど。
int data[10]{0};
char *str{nullptr};
とか入れてるけど。
118デフォルトの名無しさん (ワッチョイ 3507-VnUE)
2026/02/07(土) 18:12:26.00ID:U6SLdBI20 プロジェクト単位でちゃんと決めたらよろし
119はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2f31-WHm7)
2026/02/08(日) 10:03:13.33ID:HUCbwVuC0 組込み系とかだとスタートアップルーチンを書く立場になりうるから言語仕様の保証を受けられない (というか自分が保証する側) ということも無いとは言えないが、保証されているときに保証を信じられないと言い始めると何も出来なくなる。
① 期待できるときには期待すべき。
② 期待できるときかどうか判断する能力がないなら判断できるように学ぶべき。学んだ上で人は間違えるものであるからレビューやテストの体制を整えるべき。
③ それができない人員と組織であるときは一律に期待しないルールを課すのが仕方ないときはあるかもしれない。
① 期待できるときには期待すべき。
② 期待できるときかどうか判断する能力がないなら判断できるように学ぶべき。学んだ上で人は間違えるものであるからレビューやテストの体制を整えるべき。
③ それができない人員と組織であるときは一律に期待しないルールを課すのが仕方ないときはあるかもしれない。
120デフォルトの名無しさん (アウアウウー Sa3b-4kCU)
2026/02/08(日) 11:34:26.54ID:RiV+vMvUa struct Hoge; // 前方参照
struct Hage {
Hoge hoge;
};
struct Hoge {
int hage;
};
↑これは期待通りコンパイル出来るのですが
struct Hoge; // 前方参照
struct Hage {
Hoge hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑これだとエラーになります
struct _Hoge; // 前方参照
struct Hage {
struct _Hoge hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑こうすればコンパイルは通るのですが
typedefはそのまま残して2番目の書き方でコンパイル通すにはどう書くのが正しい?
struct Hage {
Hoge hoge;
};
struct Hoge {
int hage;
};
↑これは期待通りコンパイル出来るのですが
struct Hoge; // 前方参照
struct Hage {
Hoge hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑これだとエラーになります
struct _Hoge; // 前方参照
struct Hage {
struct _Hoge hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑こうすればコンパイルは通るのですが
typedefはそのまま残して2番目の書き方でコンパイル通すにはどう書くのが正しい?
121デフォルトの名無しさん (ワッチョイ 5f01-qldN)
2026/02/08(日) 12:37:36.36ID:mRtj2PDq0122デフォルトの名無しさん (ワッチョイ 5f01-qldN)
2026/02/08(日) 12:42:02.25ID:mRtj2PDq0 struct Hoge; // 前方参照
struct Hage {
Hoge *hoge;
};
struct Hoge {
int hage;
};
struct Hage {
Hoge *hoge;
};
struct Hoge {
int hage;
};
123はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/08(日) 13:18:45.85ID:vqX/dBJ10 >>120
細々とした規則はあるけど、覚えて置くと楽な規則は「クラスの定義はそれによって大きさが確定する」ってことだ。
逆に言えば大きさを確定できないようなクラス定義を書くことはできないように規則が定められている。
その最初の例で言えば struct Hoge; で Hoge がクラスであることはわかるようになったが大きさを決めるのに必要な情報がない。
なので
struct Hage {
Hoge hoge;
};
としたときに Hage の大きさもわからない。
そういう書き方は許されないようになっている。
二番目の例も三番目の例も同じ。
細々とした規則はあるけど、覚えて置くと楽な規則は「クラスの定義はそれによって大きさが確定する」ってことだ。
逆に言えば大きさを確定できないようなクラス定義を書くことはできないように規則が定められている。
その最初の例で言えば struct Hoge; で Hoge がクラスであることはわかるようになったが大きさを決めるのに必要な情報がない。
なので
struct Hage {
Hoge hoge;
};
としたときに Hage の大きさもわからない。
そういう書き方は許されないようになっている。
二番目の例も三番目の例も同じ。
124はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/08(日) 13:20:08.05ID:vqX/dBJ10 >>120
そして型名と型名のエイリアスは違うものなので二番目の例は前方宣言と異なる定義をしたと見做される。
C++ では C に有った構造体タグの概念が消滅したのでそういう typedef の使い方は無意味。
この場合にどうして前方宣言を使いたいのかわからない。
普通にこう書けるのに。
struct Hoge {
int hage;
};
struct Hage {
Hoge hoge;
};
そして型名と型名のエイリアスは違うものなので二番目の例は前方宣言と異なる定義をしたと見做される。
C++ では C に有った構造体タグの概念が消滅したのでそういう typedef の使い方は無意味。
この場合にどうして前方宣言を使いたいのかわからない。
普通にこう書けるのに。
struct Hoge {
int hage;
};
struct Hage {
Hoge hoge;
};
125デフォルトの名無しさん (アウアウウー Sa3b-4kCU)
2026/02/08(日) 15:55:59.30ID:V+ZijclFa 訂正です
struct Hoge; // 前方参照
struct Hage {
Hoge *hoge;
};
struct Hoge {
int hage;
};
↑これは期待通りコンパイル出来るのですが
struct Hoge; // 前方参照
struct Hage {
Hoge *hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑これだとエラーになります
struct _Hoge; // 前方参照
struct Hage {
struct _Hoge *hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑こうすればコンパイルは通るのですが
typedefはそのまま残して2番目の書き方でコンパイル通すにはどう書くのが正しい?
>そして型名と型名のエイリアスは違うものなので二番目の例は前方宣言と異なる定義をしたと見做される。
>C++ では C に有った構造体タグの概念が消滅したのでそういう typedef の使い方は無意味。
別物なら仕方無いですね
>この場合にどうして前方宣言を使いたいのかわからない。
これは再現する必要最小限のコードにしたからそうなっただけで
前方宣言にしないといけなり理由が別にありますね
struct Hoge; // 前方参照
struct Hage {
Hoge *hoge;
};
struct Hoge {
int hage;
};
↑これは期待通りコンパイル出来るのですが
struct Hoge; // 前方参照
struct Hage {
Hoge *hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑これだとエラーになります
struct _Hoge; // 前方参照
struct Hage {
struct _Hoge *hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
↑こうすればコンパイルは通るのですが
typedefはそのまま残して2番目の書き方でコンパイル通すにはどう書くのが正しい?
>そして型名と型名のエイリアスは違うものなので二番目の例は前方宣言と異なる定義をしたと見做される。
>C++ では C に有った構造体タグの概念が消滅したのでそういう typedef の使い方は無意味。
別物なら仕方無いですね
>この場合にどうして前方宣言を使いたいのかわからない。
これは再現する必要最小限のコードにしたからそうなっただけで
前方宣言にしないといけなり理由が別にありますね
126はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/08(日) 16:24:33.54ID:vqX/dBJ10 >>125
どうしても Hoge とは別に _Hoge が必要なら _Hoge のほうを別名にすればいいんじゃね?
struct Hoge; // 前方宣言
struct Hage {
Hoge *hoge;
};
typedef struct Hoge {
int hage;
} _Hoge;
あるいは typedef に強い意味があって _Hoge に意味がないなら
struct Hoge; // 前方宣言
struct Hage {
Hoge *hoge;
};
typedef struct Hoge {
int hage;
} Hoge;
とか。
C との互換性のためだけの無意味な文法だけど。
どうしても Hoge とは別に _Hoge が必要なら _Hoge のほうを別名にすればいいんじゃね?
struct Hoge; // 前方宣言
struct Hage {
Hoge *hoge;
};
typedef struct Hoge {
int hage;
} _Hoge;
あるいは typedef に強い意味があって _Hoge に意味がないなら
struct Hoge; // 前方宣言
struct Hage {
Hoge *hoge;
};
typedef struct Hoge {
int hage;
} Hoge;
とか。
C との互換性のためだけの無意味な文法だけど。
127デフォルトの名無しさん (ワッチョイ 5f01-qldN)
2026/02/08(日) 16:59:18.60ID:mRtj2PDq0 何が譲れない制約なのかがいまいちわからん
128デフォルトの名無しさん (ワッチョイ 4e7a-YCcT)
2026/02/08(日) 18:09:22.79ID:JfudPjcf0129デフォルトの名無しさん (アウアウウー Sa3b-eVAC)
2026/02/08(日) 20:28:39.19ID:rYAAwU23a こんなのこそAIにやらせたらいいんじゃないの?とかやってみもせず提案する(鼻ホジ)
コード貼りつけて「コンパイル通るようにして」
コード貼りつけて「コンパイル通るようにして」
130デフォルトの名無しさん (ワッチョイ 06a1-W5NQ)
2026/02/08(日) 21:32:46.54ID:/MlSm7K00 クラスや構造体の前方宣言は
1. FooとBarがそれぞれBarとFooを参照する、みたいな相互参照する場合
2 Barを参照するFooを定義するヘッダファイルでBarのヘッダファイルをインクルードしたくないという
気まぐれな要望を満たす場合
というのが動機の97%を占める(脳内調べ
1. FooとBarがそれぞれBarとFooを参照する、みたいな相互参照する場合
2 Barを参照するFooを定義するヘッダファイルでBarのヘッダファイルをインクルードしたくないという
気まぐれな要望を満たす場合
というのが動機の97%を占める(脳内調べ
131デフォルトの名無しさん (ワッチョイ 06a1-W5NQ)
2026/02/08(日) 22:17:03.38ID:/MlSm7K00 ていうかC言語における構造体のタグは構造体の前方宣言のためにあると言っても過言ではない
でC++においても構造体の前方宣言が同じ構文でできるのだから、構造体のタグは言語の精神として存続している(適当
struct Hoge;
struct Hage {
struct Hoge* m_pHoge;
};
struct Hoge {
struct Hage* m_pHage;
};
Hage x;
Hoge y;
x.m_pHoge = &y;
y.m_pHage = &x;
でC++においても構造体の前方宣言が同じ構文でできるのだから、構造体のタグは言語の精神として存続している(適当
struct Hoge;
struct Hage {
struct Hoge* m_pHoge;
};
struct Hoge {
struct Hage* m_pHage;
};
Hage x;
Hoge y;
x.m_pHoge = &y;
y.m_pHage = &x;
132はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2f35-WHm7)
2026/02/08(日) 22:54:52.15ID:HUCbwVuC0 >>131
ヘッダを C と C++ とで共用できるようにある程度は記法を近づけておかないといけないという現実的な理由だよ。
ヘッダを C と C++ とで共用できるようにある程度は記法を近づけておかないといけないという現実的な理由だよ。
133デフォルトの名無しさん (ワッチョイ 7bef-vmQg)
2026/02/09(月) 05:43:11.05ID:+STeSbOS0134デフォルトの名無しさん (ワッチョイ fff6-4kCU)
2026/02/09(月) 09:28:55.09ID:tiXp1BFN0 >>128
それでイケた気がする
struct _Hoge; // 前方参照
typedef struct _Hoge Hoge;
struct Hage {
Hoge *hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
それでイケた気がする
struct _Hoge; // 前方参照
typedef struct _Hoge Hoge;
struct Hage {
Hoge *hoge;
};
typedef struct _Hoge {
int hage;
} Hoge;
135デフォルトの名無しさん (ワッチョイ fff6-4kCU)
2026/02/09(月) 09:39:18.08ID:tiXp1BFN0136デフォルトの名無しさん (ワッチョイ fff6-4kCU)
2026/02/09(月) 09:44:24.40ID:tiXp1BFN0 >>133
struct __Hoge; という名前なら予約域回避出来るんですかね
struct __Hoge; という名前なら予約域回避出来るんですかね
137デフォルトの名無しさん (ワッチョイ ff07-P7Fh)
2026/02/09(月) 10:14:01.80ID:WrT4NJol0 どうせなら後ろに付けては 全部読んでないけど
138はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/09(月) 10:14:56.49ID:oKB0cnr50 >>136
二つ以上連続するアンダースコアが含まれる (←つまり先頭以外の場合も) ような名前も予約されてる。
二つ以上連続するアンダースコアが含まれる (←つまり先頭以外の場合も) ような名前も予約されてる。
139デフォルトの名無しさん (ワッチョイ fff6-4kCU)
2026/02/09(月) 10:19:18.22ID:tiXp1BFN0 >>137
そうしますありがとう
そうしますありがとう
140はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/09(月) 10:31:05.96ID:oKB0cnr50141デフォルトの名無しさん (ワッチョイ 6b86-SoeW)
2026/02/09(月) 21:00:59.91ID:uEdDgqTV0 CやC++で意図的にアンスコ始まりの名前をつけてる奴の異教徒な匂いはすごい
そのおかげでRustのように未使用変数名をアンスコから始めないと警告が出る言語は馴染めない
そのおかげでRustのように未使用変数名をアンスコから始めないと警告が出る言語は馴染めない
142デフォルトの名無しさん (オイコラミネオ MMeb-11Sd)
2026/02/10(火) 08:51:56.22ID:zw979AryM143デフォルトの名無しさん (ワッチョイ e24b-DWrS)
2026/02/10(火) 12:12:08.03ID:c/5lMsMQ0 インクルードガードのマクロを __HOGEFUGA_H__ みたいにしているライブラリめっちゃ多いけどあれ全部未定義動作踏んでることになるのかな
144デフォルトの名無しさん (アウアウ Sa1e-0WUS)
2026/02/10(火) 13:44:05.25ID:0hDV+OJXa 当たらなければどうということはない
145はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/10(火) 13:44:30.91ID:JobwbJ0F0 >>143
未定義だよ。
ただ、 C++ の予約名は「標準ライブラリが」予約していることになってる。
https://timsong-cpp.github.io/cppwp/n3337/reserved.names#1
実装上の都合とかで標準ライブラリがそういう名前を使うかもしれないからユーザが使うと衝突してワヤになるかもしれんぞというのが予約名の意味。
だから標準ライブラリやそれに付随するような OS 関連のヘッダなどで予約名を使うのは OK 。 (そのための予約)
もし問題があるとしても大抵の場合に名前の衝突を引き起こす形で顕在化してコンパイル時にわかるので未定義と言っても実態としては比較的には害は小さい。
私自身は適当に生成した乱数でインクルードガード用の長い名前を作ったりしてる。
三十文字くらいのデタラメな名前なら衝突しないだろう。
未定義だよ。
ただ、 C++ の予約名は「標準ライブラリが」予約していることになってる。
https://timsong-cpp.github.io/cppwp/n3337/reserved.names#1
実装上の都合とかで標準ライブラリがそういう名前を使うかもしれないからユーザが使うと衝突してワヤになるかもしれんぞというのが予約名の意味。
だから標準ライブラリやそれに付随するような OS 関連のヘッダなどで予約名を使うのは OK 。 (そのための予約)
もし問題があるとしても大抵の場合に名前の衝突を引き起こす形で顕在化してコンパイル時にわかるので未定義と言っても実態としては比較的には害は小さい。
私自身は適当に生成した乱数でインクルードガード用の長い名前を作ったりしてる。
三十文字くらいのデタラメな名前なら衝突しないだろう。
146デフォルトの名無しさん (アウアウウー Sa3b-eVAC)
2026/02/10(火) 21:01:52.36ID:S4BHSa1sa インクルードガードはふたつかみっつ昔ぐらいはアンスコで始まるマクロで書くパターンはものすごく多かった
まだそのころはアンスコスタートの識別子は予約語っていうのは決まってなかった、ないし決まってても周知されてなかったからな
まだそのころはアンスコスタートの識別子は予約語っていうのは決まってなかった、ないし決まってても周知されてなかったからな
147デフォルトの名無しさん (ブーイモ MM02-oWkt)
2026/02/10(火) 21:32:36.37ID:mkXRmEfkM アンスコというより短いマクロ名は禁止にしてるわ
prefixを必ずつけるルール
templateのテンプレートパラメータを大文字1文字にするやついるけどあれも禁止
prefixを必ずつけるルール
templateのテンプレートパラメータを大文字1文字にするやついるけどあれも禁止
148デフォルトの名無しさん (ブーイモ MM02-oWkt)
2026/02/10(火) 21:39:26.86ID:mkXRmEfkM ちなインクルードガードはもうpragma onceしか使ってないわ
古いコンパイラは無視、そもそもテストしないし
古いコンパイラは無視、そもそもテストしないし
149はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fb32-9AE0)
2026/02/10(火) 22:53:09.89ID:JobwbJ0F0 ARM にアンダースコアに関する言及を見つけた。
ちゃんとルールとして書いてあったけどその頃の主な用途は関数名のエンコード (マングル) だったみたいだ。
用途はともかく予約するというルールは 1990 年頃にはおおよそ成立していた模様。
ちゃんとルールとして書いてあったけどその頃の主な用途は関数名のエンコード (マングル) だったみたいだ。
用途はともかく予約するというルールは 1990 年頃にはおおよそ成立していた模様。
150デフォルトの名無しさん (ワッチョイ 06a1-W5NQ)
2026/02/11(水) 06:09:40.45ID:0WLHtnMZ0 >>140
ほんそれ
静的解析にかけたら盛んに文句言われるからやめた方がええ
クラスや構造体を前方宣言したらそのクラスや構造体の使用箇所全部で言われる……
しかしBarを参照するFooを定義するヘッダファイルでBarのヘッダファイルをインクルードしないことによって
テンプレートを駆使して超高速化を果たしたBarのソースコードをFooとBarを含むライブラリの利用者に対して
隠蔽するという要望は
気まぐれとはいえある……
ほんそれ
静的解析にかけたら盛んに文句言われるからやめた方がええ
クラスや構造体を前方宣言したらそのクラスや構造体の使用箇所全部で言われる……
しかしBarを参照するFooを定義するヘッダファイルでBarのヘッダファイルをインクルードしないことによって
テンプレートを駆使して超高速化を果たしたBarのソースコードをFooとBarを含むライブラリの利用者に対して
隠蔽するという要望は
気まぐれとはいえある……
151デフォルトの名無しさん (ワッチョイ 06a1-W5NQ)
2026/02/11(水) 06:30:09.86ID:0WLHtnMZ0 んまーそういう場合もBarのwrapperクラスBarWrpを定義したらだいたい前方宣言無しで済むが
ていうか前方宣言でないと駄目なケースがあったような気がするが思い出せんぬスマンコ……
ていうか前方宣言でないと駄目なケースがあったような気がするが思い出せんぬスマンコ……
152デフォルトの名無しさん (ワッチョイ e7b9-W5NQ)
2026/02/12(木) 00:01:23.18ID:vN2J3PIJ0 >>149
そなた、ここにもいたんか。extern "C"を使えば共存できるんだな。
そなた、ここにもいたんか。extern "C"を使えば共存できるんだな。
153デフォルトの名無しさん (オイコラミネオ MM9e-11Sd)
2026/02/12(木) 17:26:01.55ID:ompyTT6BM >>143
現実的には大丈夫。
__XXXのような名前は、現代では、コンパイラがSyntax Sugerを
展開する時などに使いたいからユーザーによる使用を禁止している
だけであり、__XXXX_H__ みたいな、誰でも広く使っていた
ような名前はコンパイラは生成しない努力はされているハズ。
どういうことかというと、__XXX_1AB5E32 見たいなのは駄目という
こと。このようなものは、コンパイラが内部で使う可能性が有るから。
現実的には大丈夫。
__XXXのような名前は、現代では、コンパイラがSyntax Sugerを
展開する時などに使いたいからユーザーによる使用を禁止している
だけであり、__XXXX_H__ みたいな、誰でも広く使っていた
ような名前はコンパイラは生成しない努力はされているハズ。
どういうことかというと、__XXX_1AB5E32 見たいなのは駄目という
こと。このようなものは、コンパイラが内部で使う可能性が有るから。
154デフォルトの名無しさん (ワッチョイ d75f-KPQs)
2026/02/20(金) 19:51:24.93ID:mvvTma+J0 だれか試した人いる?Linuxしか対応してないみたいだけど
AMDがCPUで処理するプログラムをGPU向けに移植するためのライブラリ「hipThreads」を発表 - GIGAZINE
2026年02月20日 15時43分
https://gigazine.net/news/20260220-amd-hipthreads/
AMDがCPUで処理することを前提に書かれたC++コードをAMD製GPUで実行できるように移植できるC++スタイル並列処理ライブラリ「hipThreads」を発表しました。
AMDがCPUで処理するプログラムをGPU向けに移植するためのライブラリ「hipThreads」を発表 - GIGAZINE
2026年02月20日 15時43分
https://gigazine.net/news/20260220-amd-hipthreads/
AMDがCPUで処理することを前提に書かれたC++コードをAMD製GPUで実行できるように移植できるC++スタイル並列処理ライブラリ「hipThreads」を発表しました。
155デフォルトの名無しさん (ワッチョイ 3752-DngD)
2026/02/20(金) 22:04:11.62ID:Jw2pgDfG0 サンプル見たら std::thread を hip::thread に書き換えるだけでいいみたいだ すごいね!
まあCPU前提のコードをGPUで実行したら遅くなりそうだけども、、、
まあCPU前提のコードをGPUで実行したら遅くなりそうだけども、、、
156デフォルトの名無しさん (ワッチョイ ffa1-YBdV)
2026/02/20(金) 22:13:04.13ID:+7x9lXF30 OpenMPみたいにどうーコンパイルされるか意識しながら書いたら
良いのでは(適当
良いのでは(適当
157デフォルトの名無しさん (ワッチョイ 57d6-CLTB)
2026/02/20(金) 22:32:58.70ID:7f1gS3Gi0 どれくらい速くなるのか知りたいね
158デフォルトの名無しさん (ワッチョイ bfa7-yorh)
2026/02/21(土) 07:37:19.60ID:V/bO66F30 CUDA使ったことあるならわかるけどCPU向けのロジックで実行しても思ったほど性能でないのは目に見えてる
GPU使いたい人は性能が欲しいわけ
CPUとの共通化なんて二の次
GPU使いたい人は性能が欲しいわけ
CPUとの共通化なんて二の次
159デフォルトの名無しさん (オッペケ Sr4b-IA++)
2026/02/21(土) 07:49:16.58ID:mud/uCXSr まずはCPUでテストしたいしね ゆくゆくはGPUだのFPGAだのにオフロードするとして
あと、ヒネってないC++なら、AIに頼みやすかったりとかするんでは
数学に強いAIとか居るし
あと、ヒネってないC++なら、AIに頼みやすかったりとかするんでは
数学に強いAIとか居るし
160デフォルトの名無しさん (ワッチョイ 1ff6-I8kI)
2026/02/21(土) 10:15:41.38ID:ftaqCpnX0 CPUではループするような場面を
GPUやFPGAは全部展開して並列して一気に計算終わらすイメージ
そこまで考慮してコンパイルしてくれるなら良いけど
あらかじめ意識して描いておかないといけないのなら
最初からGPUやFPGA用に描いた方が速いという人もそれなりに居るだろう
GPUやFPGAは全部展開して並列して一気に計算終わらすイメージ
そこまで考慮してコンパイルしてくれるなら良いけど
あらかじめ意識して描いておかないといけないのなら
最初からGPUやFPGA用に描いた方が速いという人もそれなりに居るだろう
161はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 57e6-r3UU)
2026/02/21(土) 10:29:10.51ID:I/qCFaZg0 既存のプログラムが楽にちょっと良くなる (可能性がある) というのが肝心なんだろ。
GPU に任せてたいして高速にならなかったとしても GPU に任せた分だけ CPU が空くのが有り難いということもあるかもしれんし。
GPU に任せてたいして高速にならなかったとしても GPU に任せた分だけ CPU が空くのが有り難いということもあるかもしれんし。
162デフォルトの名無しさん (スフッ Sdbf-RN7a)
2026/02/21(土) 11:17:40.71ID:u2uo9vOXd ドワンゴがFPGA創るって話あった気がするけど
あれどうなったん
あれどうなったん
163はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7732-JUzW)
2026/02/21(土) 17:41:29.78ID:s4F75T7K0 >>162
公式な発表をざっと検索したけどここ十年くらいは動きが無いっぽいので自然消滅したか部分的に色々なプロジェクトに吸収されるとかで落ち着いたくらいの感じじゃないのかな。
公式発表がない以上は中の人じゃないと状況はわからん。
公式な発表をざっと検索したけどここ十年くらいは動きが無いっぽいので自然消滅したか部分的に色々なプロジェクトに吸収されるとかで落ち着いたくらいの感じじゃないのかな。
公式発表がない以上は中の人じゃないと状況はわからん。
164デフォルトの名無しさん (ワッチョイ 9f02-pwlK)
2026/02/21(土) 17:45:31.81ID:3uyLuZPO0 cudaでスレッドの足並み揃わなくなる
再帰呼び出しとかやると劇的に遅くなる
再帰呼び出しとかやると劇的に遅くなる
165デフォルトの名無しさん (ワッチョイ 9f02-eqlr)
2026/02/21(土) 18:50:07.50ID:14g0k3qq0166デフォルトの名無しさん (アウアウキー Sa18-IAiK)
2026/02/22(日) 01:52:17.87ID:Aftphswla そうかGPUで今迄CPUで実行してたコードを動かすと速くなるのか!ピコーンひらめいた!!
もうCPU消してGPUだけ残してそれをCPUにしたらいいんじゃね?
もうCPU消してGPUだけ残してそれをCPUにしたらいいんじゃね?
167デフォルトの名無しさん (ワッチョイ 6214-rh+/)
2026/02/22(日) 08:32:21.42ID:EXCtdtEM0 中学生レベルのウイット能力
168デフォルトの名無しさん (ワッチョイ 8ada-xArS)
2026/02/22(日) 10:08:42.81ID:ilaTVlij0 CPUは汎用だからな
GPUにはそれができない
GPUにはそれができない
169デフォルトの名無しさん (ワッチョイ 6214-rh+/)
2026/02/22(日) 11:02:18.91ID:EXCtdtEM0 >>168
汎用とか知ったかかましてますなぁ?
汎用計算はとっくにGPUで可能
むしろGPGPUなんて当たり前すぎて死語になってる
単純に今のGPUはCPUにホストされる前提のデバイスだからCPUなしには成り立たない
汎用とか知ったかかましてますなぁ?
汎用計算はとっくにGPUで可能
むしろGPGPUなんて当たり前すぎて死語になってる
単純に今のGPUはCPUにホストされる前提のデバイスだからCPUなしには成り立たない
170デフォルトの名無しさん (アウアウウー Sab5-1TjL)
2026/02/22(日) 11:22:29.00ID:3hDav/kpa >>166
g/GPU/FPGA/s
改変してるが
>そうかFPGAで今迄CPUで実行してたコードを動かすと速くなるのか!ピコーンひらめいた!!
>もうCPU消してFPGAだけ残してそれをCPUにしたらいいんじゃね?
これはネラーより頭の良い人達がIPで何十年も前に実現してる
g/GPU/FPGA/s
改変してるが
>そうかFPGAで今迄CPUで実行してたコードを動かすと速くなるのか!ピコーンひらめいた!!
>もうCPU消してFPGAだけ残してそれをCPUにしたらいいんじゃね?
これはネラーより頭の良い人達がIPで何十年も前に実現してる
171デフォルトの名無しさん (ワッチョイ 8ada-xArS)
2026/02/22(日) 11:36:06.71ID:ilaTVlij0172デフォルトの名無しさん (ワッチョイ 6214-rh+/)
2026/02/22(日) 13:55:23.88ID:EXCtdtEM0173デフォルトの名無しさん (ワッチョイ 485f-ps2q)
2026/02/22(日) 14:01:28.74ID:8JYo9Wc10 iGPUのほうがこういう仕組みと相性良さそうに思えるがそうでもないのかな
174デフォルトの名無しさん (オイコラミネオ MM73-6YdR)
2026/02/22(日) 14:52:04.69ID:qRehUlpyM GPUの「Pixel Shader」というものを調べていたことが有るけど、
元々はテクスチャの各点(Texel)のカラー値を計算で求めるための
ものだったようだけど、それを汎用計算用に使うテクニックが
生み出されていた。
また、GPUはコア数が多いが、必ずしも各コアが独立して計算
できるわけではなく、まず、コードはあるブロックに属する
全コアで共通になっていて、if 文のようなものは、
条件に合っているコアだけが実行し、合ってないコアは、
何もせずに停止、といような仕組みになっているらしかった。
だから、if 文が有ると、例えばコアの半分くらいは実行を停止
しているような状態になるらしい。
再帰関数なども掛けるとのことだったが、どういう風に実行されるのは、
個人的にはまだちゃんと理解してない。
元々はテクスチャの各点(Texel)のカラー値を計算で求めるための
ものだったようだけど、それを汎用計算用に使うテクニックが
生み出されていた。
また、GPUはコア数が多いが、必ずしも各コアが独立して計算
できるわけではなく、まず、コードはあるブロックに属する
全コアで共通になっていて、if 文のようなものは、
条件に合っているコアだけが実行し、合ってないコアは、
何もせずに停止、といような仕組みになっているらしかった。
だから、if 文が有ると、例えばコアの半分くらいは実行を停止
しているような状態になるらしい。
再帰関数なども掛けるとのことだったが、どういう風に実行されるのは、
個人的にはまだちゃんと理解してない。
175デフォルトの名無しさん (ワッチョイ ce01-Z1/M)
2026/02/22(日) 15:23:54.87ID:Ep5H4V290 グラフィックにしろGPGPUにしろ大抵はメモリ帯域がネックになる
DDR5-6400でも51.2 GB/s x 2ch≒102GB/sとかで、
128bit GDDR6のRTX3050でも220GB/sとかだから基本iGPUは敵わない
コンピュートバウンドだとしてもそれはそれでdGPUに敵わない
dGPUのVRAMを超えるサイズのLLMを動かすケースとかは知らんけど
「iGPUとメインメモリを使ったGPGPU」は基本手間の割に性能は出ない印象
DDR5-6400でも51.2 GB/s x 2ch≒102GB/sとかで、
128bit GDDR6のRTX3050でも220GB/sとかだから基本iGPUは敵わない
コンピュートバウンドだとしてもそれはそれでdGPUに敵わない
dGPUのVRAMを超えるサイズのLLMを動かすケースとかは知らんけど
「iGPUとメインメモリを使ったGPGPU」は基本手間の割に性能は出ない印象
176デフォルトの名無しさん (ワッチョイ 96a5-pFk+)
2026/02/22(日) 15:57:35.96ID:fvh4YgMg0 CUDAの方のthrustみたいなもんだろ。saxpyみたいなのなら変更無しでそのまま高速化できるだろうけど
177デフォルトの名無しさん (ワッチョイ 485f-ps2q)
2026/02/22(日) 17:12:34.09ID:8JYo9Wc10 20年以上前にハイエンドGPUでしか最高画質FHDで遊べなかったハーフライフ2が現世代のiGPUなら最高画質4Kで快適に動くようになってる
178デフォルトの名無しさん (ワッチョイ ce01-Z1/M)
2026/02/22(日) 22:13:04.10ID:Ep5H4V290 メモリ帯域で言うと今のDDR5x2chの102GB/sに対して
2007年のGeForce 8800GTXが86GB/s、8800Ultraが103GB/sだから、
その頃のハイエンドくらいの性能は出るってことか。
(FLOPSは400GFLOPS未満くらいで、Alder Lake(12世代)のCorei最下位でクリアしてる)
今のiGPUすげーとも思うけど、どっちかというと20万円以下で
19年未来のiGPUと勝負できた当時のハイエンドすげーとも思う。
2007年のGeForce 8800GTXが86GB/s、8800Ultraが103GB/sだから、
その頃のハイエンドくらいの性能は出るってことか。
(FLOPSは400GFLOPS未満くらいで、Alder Lake(12世代)のCorei最下位でクリアしてる)
今のiGPUすげーとも思うけど、どっちかというと20万円以下で
19年未来のiGPUと勝負できた当時のハイエンドすげーとも思う。
179デフォルトの名無しさん (ワッチョイ 485f-ps2q)
2026/02/23(月) 01:20:29.69ID:VeydFs230 ハーフライフ2は2004年リリースだけど新世代GPUが登場した時などにミニアップデートされ続けている
iGPUの性能向上だけではなく、22年間の保守でハーフライフ2そのものも軽量化・最適化されてきた結果だろう
最新のアップデートは2025年7月24日
AI需要によるメモリ高騰で新世代GPUが当分出ないようならアップデートも当分ないんじゃないかな
iGPUの性能向上だけではなく、22年間の保守でハーフライフ2そのものも軽量化・最適化されてきた結果だろう
最新のアップデートは2025年7月24日
AI需要によるメモリ高騰で新世代GPUが当分出ないようならアップデートも当分ないんじゃないかな
180デフォルトの名無しさん (オイコラミネオ MM28-6YdR)
2026/02/23(月) 02:25:47.83ID:q8RdMOHeM iGPUって、CPU内臓のGPUの事全般を言っているのかな?
AMD製のCPU内臓のGPUも、Intel製CPU内臓のGPUも、世代を問わず
全部まとめて iGPU ってことで合ってるの?
AMD製のCPU内臓のGPUも、Intel製CPU内臓のGPUも、世代を問わず
全部まとめて iGPU ってことで合ってるの?
181デフォルトの名無しさん (ワッチョイ 485f-ps2q)
2026/02/23(月) 02:28:58.00ID:VeydFs230 消火器と消化器と小火器はぜんぜんちがう別のもの
182デフォルトの名無しさん (ワッチョイ a609-xArS)
2026/02/23(月) 09:44:57.81ID:6nUKEUC70 命令の実行の仕組みが全く別物なんだし
GPUがCPUの完全上位互換にはなれないんだからな
GPUがCPUの完全上位互換にはなれないんだからな
183デフォルトの名無しさん (ワイーワ2 FF7a-1TjL)
2026/02/23(月) 10:37:38.61ID:HoLZBWNFF184はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-JQav)
2026/02/23(月) 12:20:51.92ID:8YxSPIrH0 ものすごく簡単に言うなら GPU は同じ計算を異なるデータに対して大量に並列処理するような用途のために設計されてる。
グラフィクスを効果的に表現するためにはそれが必要だったからだ。
しかし日常的に必要な計算はある処理を終えてから次の処理をするという順序関係があるのが普通だし、そういう処理では GPU は使い物にならない。
CPU を主体にしつつ並列計算が効果的なところでは GPU に任せるという構成が普通ということになる。
普通は GPU に任せるにしてもそもそもどこを GPU に割り当てると効果的なのかを検討するところから面倒なんだよ。
少し効果があるかもしれないという程度のために手間をかけるのも面倒だしな。
>>154 は「スレッドを使ってる箇所は (効果的というほどでないかもしれないが) ちょっとでも GPU で出来へんか?」という手軽な導入がキモなんだろ。
効果があることがわかったならガッツリとチューニングするのはそれからでもいい。
グラフィクスを効果的に表現するためにはそれが必要だったからだ。
しかし日常的に必要な計算はある処理を終えてから次の処理をするという順序関係があるのが普通だし、そういう処理では GPU は使い物にならない。
CPU を主体にしつつ並列計算が効果的なところでは GPU に任せるという構成が普通ということになる。
普通は GPU に任せるにしてもそもそもどこを GPU に割り当てると効果的なのかを検討するところから面倒なんだよ。
少し効果があるかもしれないという程度のために手間をかけるのも面倒だしな。
>>154 は「スレッドを使ってる箇所は (効果的というほどでないかもしれないが) ちょっとでも GPU で出来へんか?」という手軽な導入がキモなんだろ。
効果があることがわかったならガッツリとチューニングするのはそれからでもいい。
185デフォルトの名無しさん (ブーイモ MM5a-rh+/)
2026/02/23(月) 13:04:36.30ID:55PnKQ2NM cudaでいいから
c++の複雑さは持ち込まないのが吉
c++の複雑さは持ち込まないのが吉
186デフォルトの名無しさん (アウアウ Sa7e-iZCc)
2026/02/23(月) 14:13:49.88ID:BEjsJ4Cna 汎用処理をGPUにやらせるより、CPUの超省電力コアのほうがまし
187デフォルトの名無しさん (スフッ Sd94-RhiN)
2026/02/23(月) 14:34:07.65ID:zDq4dyP7d SoCが流行り
188デフォルトの名無しさん (ワッチョイ 629e-rh+/)
2026/02/23(月) 14:49:42.48ID:FZZ9U96H0 SoCが今頃流行りだした地方があるのにびっくり
189デフォルトの名無しさん (ワッチョイ 4ca1-Gt4s)
2026/02/23(月) 17:07:38.05ID:8CvTiL8f0 行列計算は行a_i_j (j=1..N)と列b_i_j (i=1..N)の積和の繰り返しで
多分これを同じブロックに属する複数のコアで並列計算するんだけんども
a_1_1、a_1_2が異なる値かb_1_1、b_2_1が異なる値だったりしたら
積の演算の中で桁上がりがtrueのコアとfalseのコアが混在して
if文の条件が合うコアと合わないコアが混在して計算を完遂できないのでは
とそこはかとなく疑問が(キリ
多分これを同じブロックに属する複数のコアで並列計算するんだけんども
a_1_1、a_1_2が異なる値かb_1_1、b_2_1が異なる値だったりしたら
積の演算の中で桁上がりがtrueのコアとfalseのコアが混在して
if文の条件が合うコアと合わないコアが混在して計算を完遂できないのでは
とそこはかとなく疑問が(キリ
190デフォルトの名無しさん (ワッチョイ 4ca1-Z1/M)
2026/02/23(月) 17:34:00.83ID:8CvTiL8f0 GPUでの計算は例えばこんな風に進行するらし
https://at-sushi.com/pukiwiki/index.php?Thought%20GPGPU%20%A4%C7%B5%D5%B9%D4%CE%F3%A4%CE%B7%D7%BB%BB
個々のコアはチューリングマシンていやーチューリングマシンなので汎用やが
こういう風に計算を組み立てないと1つのブロックで動作を完遂するのが1コアとかになって並列性が生かせんぬ
ていうかコアのshared memoryやキャッシュメモリは少なく(数MBぐらい
ホストCPUとGPUボード上のVRAM間のデータ転送もタダではないので
GPUをデータ転送計画と計算手順を示す前から汎用とみなすことは机上の空論……
https://at-sushi.com/pukiwiki/index.php?Thought%20GPGPU%20%A4%C7%B5%D5%B9%D4%CE%F3%A4%CE%B7%D7%BB%BB
個々のコアはチューリングマシンていやーチューリングマシンなので汎用やが
こういう風に計算を組み立てないと1つのブロックで動作を完遂するのが1コアとかになって並列性が生かせんぬ
ていうかコアのshared memoryやキャッシュメモリは少なく(数MBぐらい
ホストCPUとGPUボード上のVRAM間のデータ転送もタダではないので
GPUをデータ転送計画と計算手順を示す前から汎用とみなすことは机上の空論……
191デフォルトの名無しさん (オイコラミネオ MM28-6YdR)
2026/02/24(火) 02:38:57.46ID:npT981duM GPUの「Pixel Shader」の場合に限定した話だと、あるブロックに属する32個のコアが、1つのコードを共有し、
if ( a[i] > 5 ) { (処理); }
というコードを32個のコアが、それぞれのコア番号「i」に対して実行しようとする。
a[0] は、10 だから実行、a[1] は、3 だから非実行、・・・
のように、それぞれのコアで、実行するか実行しないかが分かれる。
それで、実行するコアがその部分を実行している間は、実行しないコアは、完全にその場で停止している。
そして、(処理); の部分の実行が完了すると、全てのコアの IP(命令ポインタ、PC) が if ブロックの
次の行へと進むようになっている。
そのようにして、「IP」は全てのコアで共通して進められるが、上記の
if ( a[i] > 5 ) { (処理); }
というコードを32個のコアが、それぞれのコア番号「i」に対して実行しようとする。
a[0] は、10 だから実行、a[1] は、3 だから非実行、・・・
のように、それぞれのコアで、実行するか実行しないかが分かれる。
それで、実行するコアがその部分を実行している間は、実行しないコアは、完全にその場で停止している。
そして、(処理); の部分の実行が完了すると、全てのコアの IP(命令ポインタ、PC) が if ブロックの
次の行へと進むようになっている。
そのようにして、「IP」は全てのコアで共通して進められるが、上記の
192デフォルトの名無しさん (オイコラミネオ MM28-6YdR)
2026/02/24(火) 02:40:50.92ID:npT981duM >>191
そのようにして「IP」は全てのコアで共通して進められるが、上記のように、
あるコアは実行し、あるコアは実行しない、というような事になっている。
これは、通常の x86/x64 のような汎用 CPU の、マルチコア(マルチスレッド)とは全く
異なる処理方法である。
そのようにして「IP」は全てのコアで共通して進められるが、上記のように、
あるコアは実行し、あるコアは実行しない、というような事になっている。
これは、通常の x86/x64 のような汎用 CPU の、マルチコア(マルチスレッド)とは全く
異なる処理方法である。
193デフォルトの名無しさん (オイコラミネオ MM28-6YdR)
2026/02/24(火) 02:45:46.86ID:npT981duM >>192
厳密に言うと、if の条件式を満たさないために「実行しないコア」も、その場で停止している訳ではなく、
if ブロックにおいて「IP」 は、実行するコアと全く同様に 1命令ずつ進んでいくのだろう。
しかし、そのコアにおいては「命令を実行するフラグ」が「0」になっているので、命令の場所に IP
が来ても、無視して処理しない、ということになっているのだと推定される。
x86/x64 の SIMD 命令のパックド命令において、BIT フラグが 1 になっている要素だけを add したり、
mul したりする命令と良く似ている。
厳密に言うと、if の条件式を満たさないために「実行しないコア」も、その場で停止している訳ではなく、
if ブロックにおいて「IP」 は、実行するコアと全く同様に 1命令ずつ進んでいくのだろう。
しかし、そのコアにおいては「命令を実行するフラグ」が「0」になっているので、命令の場所に IP
が来ても、無視して処理しない、ということになっているのだと推定される。
x86/x64 の SIMD 命令のパックド命令において、BIT フラグが 1 になっている要素だけを add したり、
mul したりする命令と良く似ている。
194デフォルトの名無しさん (アウアウウー Sab5-1TjL)
2026/02/24(火) 11:14:20.81ID:kCIuJLLLa195デフォルトの名無しさん (ワッチョイ c7d6-xArS)
2026/02/24(火) 11:34:17.31ID:kg6I4yzW0 行列計算用の専用の枠があって
そこに数値突っ込めば、ハードウエアで行列計算して返してくれるっていうのの集合体でしょ
ハードウエア計算なんだからどうやったってソフトウエアと同じ汎用性は持ちえない
そこに数値突っ込めば、ハードウエアで行列計算して返してくれるっていうのの集合体でしょ
ハードウエア計算なんだからどうやったってソフトウエアと同じ汎用性は持ちえない
196デフォルトの名無しさん (ブーイモ MM5a-rh+/)
2026/02/24(火) 11:48:43.35ID:TQYsyvkaM197デフォルトの名無しさん (ワッチョイ b8ae-iZCc)
2026/02/24(火) 11:50:40.87ID:PyiHuWdp0 CMakeでVisual Studioのソリューションも生成できてすごいと思ってたんだけど
CMakeLists.txtにset(CMAKE_CXX_STANDARD 17) とか set(CMAKE_CXX_FLAGS_RELEASE "/MT") 書いてもソリューション設定に反映されないじゃん
include_directories(include/win32) とか add_definitions(-D_UNICODE) 反映される設定もある
なんなのこれ? ポンコツ?
CMakeLists.txtにset(CMAKE_CXX_STANDARD 17) とか set(CMAKE_CXX_FLAGS_RELEASE "/MT") 書いてもソリューション設定に反映されないじゃん
include_directories(include/win32) とか add_definitions(-D_UNICODE) 反映される設定もある
なんなのこれ? ポンコツ?
198デフォルトの名無しさん (ブーイモ MM5a-rh+/)
2026/02/24(火) 11:51:09.03ID:TQYsyvkaM NvidiaとAMDでも実装方法違うからな
似てるけど一概にこうとは言えない
似てるけど一概にこうとは言えない
199デフォルトの名無しさん (ワッチョイ 6107-Y2GP)
2026/02/24(火) 12:41:46.86ID:UR2wWNoS0 >>197
しばらくはModulesをgrepするようにしたほうがいい
最近CMake使ってないけど、俺の時はそうした 大した量でもないので
どうしてこうなってんだろ? と思うようなことがわかったりわからなかったり
ポンコツなのは、まあそうかなと内心思う これは使えるポンコツだ
しばらくはModulesをgrepするようにしたほうがいい
最近CMake使ってないけど、俺の時はそうした 大した量でもないので
どうしてこうなってんだろ? と思うようなことがわかったりわからなかったり
ポンコツなのは、まあそうかなと内心思う これは使えるポンコツだ
200はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-JQav)
2026/02/24(火) 12:58:27.91ID:9uqtqPgz0 CMake は autotools よりマシではあるだろ。
綺麗に整理しようとしても場当たり的な処理も必要な現実があるから、現実のほうを変えられない以上はどうにもならない。
現実の道具はだいたい汚いもんだ。
綺麗に整理しようとしても場当たり的な処理も必要な現実があるから、現実のほうを変えられない以上はどうにもならない。
現実の道具はだいたい汚いもんだ。
201デフォルトの名無しさん (オイコラミネオ MM28-6YdR)
2026/02/24(火) 13:06:34.08ID:RgaUAetIM >>195
GPU の Pixel Shader は、C言語に似た言語でプログラミングできるから、汎用性はある。
GPU の Pixel Shader は、C言語に似た言語でプログラミングできるから、汎用性はある。
202デフォルトの名無しさん (ワッチョイ b8ae-iZCc)
2026/02/24(火) 13:42:43.62ID:PyiHuWdp0 CMakeで .sln 作って MSBuild コマンドでビルドしてたんだけど Makefile に戻ることにするよ
203デフォルトの名無しさん (ワッチョイ 4502-Y2GP)
2026/02/24(火) 21:58:32.57ID:dOU65tTU0 CMakeは汚すぎるのでMesonに乗り換えた方がいいよ
204デフォルトの名無しさん (ワッチョイ ee35-rh+/)
2026/02/24(火) 22:12:02.61ID:jeK3cIDS0 mesonはmsbuild向けにはおすすめしない
複数configuration持てないから
xmakeのほうがよい
複数configuration持てないから
xmakeのほうがよい
205デフォルトの名無しさん (ワッチョイ be16-pldw)
2026/02/24(火) 22:15:55.66ID:xlQkJLJS0 ビルドツールが乱立し始めたので
改めてautotoolsが良いと
俺は思ってるんだけどなぁ
改めてautotoolsが良いと
俺は思ってるんだけどなぁ
206デフォルトの名無しさん (ワッチョイ ee35-rh+/)
2026/02/25(水) 07:31:32.45ID:NEmOE5Re0 老人にはそれでいいんじゃない
207デフォルトの名無しさん (オイコラミネオ MM73-6YdR)
2026/02/25(水) 13:58:27.23ID:9g1YRgVnM >>205
autotools は難しい印象がある。
autotools は難しい印象がある。
208デフォルトの名無しさん (ワッチョイ be16-pldw)
2026/02/25(水) 14:51:44.92ID:7MpbV45r0 autotoolsは情報がウェブ上に多数あるので良いよ
スケルトンプロジェクトを生成するシェルスクリプト書いとくと捗る
スケルトンプロジェクトを生成するシェルスクリプト書いとくと捗る
209デフォルトの名無しさん (ブーイモ MM5a-rh+/)
2026/02/25(水) 15:16:06.49ID:RsqT4PDPM githubでいろんなプロジェクト見るけどautotools使ってるやつなんか長らく見たことないわ
ここの住民は化石かなんかか
ここの住民は化石かなんかか
210はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-JQav)
2026/02/25(水) 17:18:11.09ID:8lHGx4YK0 対象アーキテクチャが広いなら Autotools しか選択肢がない。
逆に言えば Linux と mac と Windows くらいだけサポートできれば上等だろうみたいに割り切るなら autotools は無駄に複雑なだけでとりたてて利点はないな。
逆に言えば Linux と mac と Windows くらいだけサポートできれば上等だろうみたいに割り切るなら autotools は無駄に複雑なだけでとりたてて利点はないな。
211デフォルトの名無しさん (ワッチョイ be16-pldw)
2026/02/25(水) 19:06:00.47ID:7MpbV45r0 M4言語なんて謎言語素敵すぎやん?
212デフォルトの名無しさん (ワッチョイ 847c-sZvw)
2026/02/25(水) 19:25:59.32ID:GFjzhQH30 C++erならbjam使えよ()
213デフォルトの名無しさん (ワッチョイ ee86-+DkP)
2026/02/25(水) 23:16:11.91ID:Er07XCS00 autotoolsのために今どきPerlなんか入れたくない
複雑ならSConsで単純ならimakeでxmkmfすれば良いんだ
複雑ならSConsで単純ならimakeでxmkmfすれば良いんだ
214デフォルトの名無しさん (ワッチョイ de5f-ps2q)
2026/02/26(木) 00:04:24.31ID:Aq9Ob8vt0 PerlはGit for Windowと一緒にインストールされるやつを使えばok
215デフォルトの名無しさん (オイコラミネオ MM73-6YdR)
2026/02/26(木) 01:06:45.87ID:60+3tnP7M BJ Stroustrup 氏って、長年、ウォールストリートかどっかの金融マンしていてそれが収入源なんだって。
だから言っている事が数学的に頓珍漢なことが有るのか。
納得。
だから言っている事が数学的に頓珍漢なことが有るのか。
納得。
216デフォルトの名無しさん (オイコラミネオ MM73-6YdR)
2026/02/26(木) 01:11:31.56ID:60+3tnP7M >>215
「ストラウストラップ氏は、長年金融大手の**モルガン・スタンレー(Morgan Stanley)**に勤務しています。
役職: マネジング・ディレクター(Managing Director)およびテクノロジー部門のフェロー。
ウォール街の大手金融機関のシニアエグゼクティブ」
「ストラウストラップ氏は、長年金融大手の**モルガン・スタンレー(Morgan Stanley)**に勤務しています。
役職: マネジング・ディレクター(Managing Director)およびテクノロジー部門のフェロー。
ウォール街の大手金融機関のシニアエグゼクティブ」
217デフォルトの名無しさん (オイコラミネオ MM73-6YdR)
2026/02/26(木) 01:33:43.68ID:60+3tnP7M autotools は、Unix の非互換性を採るための、ほぼ Unix 特化のツールというイメージだな。
$ ./configure
# make
みたいなお約束になっていて、基本からして 前提。
Unix 互換OS だと各種インタプリタがインストール済みであることを仮定できるからそうなってるし、
ほぼ #include するヘッダファイルのマクロや関数郡の存在チェックや互換性チェックを主な目的に
しているような印象が有る。
しかも、出来上がったツールのコマンドラインオプションで動的に修正せずに、
configure スクリプトのコマンドラインを帰ることで、
makefile 自体を書き換えて、コンパイル段階で、別のバイナリを作れるようにC言語のマクロを変更する
ような仕組みになっている。
これは、C コンパイラがあらゆる環境でインストール済みであることを前提にした仕組みであり、
Unix 環境の前提に強く依存している。
$ ./configure
# make
みたいなお約束になっていて、基本からして 前提。
Unix 互換OS だと各種インタプリタがインストール済みであることを仮定できるからそうなってるし、
ほぼ #include するヘッダファイルのマクロや関数郡の存在チェックや互換性チェックを主な目的に
しているような印象が有る。
しかも、出来上がったツールのコマンドラインオプションで動的に修正せずに、
configure スクリプトのコマンドラインを帰ることで、
makefile 自体を書き換えて、コンパイル段階で、別のバイナリを作れるようにC言語のマクロを変更する
ような仕組みになっている。
これは、C コンパイラがあらゆる環境でインストール済みであることを前提にした仕組みであり、
Unix 環境の前提に強く依存している。
218デフォルトの名無しさん (オイコラミネオ MM73-6YdR)
2026/02/26(木) 01:35:03.28ID:60+3tnP7M219デフォルトの名無しさん (ワッチョイ ceb9-WMY5)
2026/02/26(木) 06:14:04.38ID:fttEQeAW0 また変なのが住みついたなあ
お前もコテハンつけろよ
お前もコテハンつけろよ
220デフォルトの名無しさん (ワッチョイ 4502-Y2GP)
2026/02/26(木) 07:03:21.62ID:NJOyhT0b0 autotoolsなんか21世紀に採用するようなもんじゃないだろ
221はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bd32-JQav)
2026/02/26(木) 08:17:16.82ID:CAp2ADca0222デフォルトの名無しさん (ワッチョイ be16-pldw)
2026/02/26(木) 10:30:48.48ID:YP16Qqa+0 UNIXを覚え始めた頃にだいたいトラウマなるパターンで
覚えると便利なもんだよ
覚えると便利なもんだよ
223デフォルトの名無しさん (アウアウキー Sa18-iZCc)
2026/02/26(木) 10:38:57.64ID:ljNJFZcga ごめん
CMakeLists.txtにset(CMAKE_CXX_FLAGS_RELEASE "/MT") を書いても .sln に反映されない原因が分かった
C++ ではなく C で書かれたものが 1つだけ混ざってたんだ
当たり前だけど、Cプロジェクトの場合は CMAKE_C_FLAGS_RELEASE を使わなきゃいけなかった💦
CMakeLists.txtにset(CMAKE_CXX_FLAGS_RELEASE "/MT") を書いても .sln に反映されない原因が分かった
C++ ではなく C で書かれたものが 1つだけ混ざってたんだ
当たり前だけど、Cプロジェクトの場合は CMAKE_C_FLAGS_RELEASE を使わなきゃいけなかった💦
224デフォルトの名無しさん (JP 0H9e-1TjL)
2026/02/26(木) 16:16:57.54ID:Uax0VAY3H225デフォルトの名無しさん (ワッチョイ e202-p7Pm)
2026/02/26(木) 20:24:47.08ID:DphmPkE+0226デフォルトの名無しさん (ワッチョイ 6295-rh+/)
2026/02/26(木) 20:55:42.07ID:xEadvgjw0 最初templateの文法見たとき冗長すぎるだろと思ったけど、ここまで言語が発展したんでそこだけみれば慧眼の持ち主と思ってる
227デフォルトの名無しさん (アウアウウー Sab5-1TjL)
2026/02/28(土) 09:25:52.34ID:TDhNLEPTa 「発展」ェー
228デフォルトの名無しさん (ワッチョイ 847c-sZvw)
2026/02/28(土) 10:20:03.52ID:sXyZkw1+0 うっかりチューリング完全になっちゃったテヘ
229デフォルトの名無しさん (ワッチョイ 4ca1-Zq4p)
2026/02/28(土) 21:53:02.36ID:KOlHKMv00 >>194
>>196
そのリンクは創造で貼ったわサーセン;;;;;
GPGPUでググったら創造の斜め上の面倒くささやったわ(できあいのライブラリは使わないものとする
https://speakerdeck.com/primenumber/puroguramuwogao-su-hua-suruhua-ii-gpgpubian
行列の積ですら何も考えずに書いたらCPUより遅いという
しかしかんばれば6000倍の高速化というのは魅力……
>>196
そのリンクは創造で貼ったわサーセン;;;;;
GPGPUでググったら創造の斜め上の面倒くささやったわ(できあいのライブラリは使わないものとする
https://speakerdeck.com/primenumber/puroguramuwogao-su-hua-suruhua-ii-gpgpubian
行列の積ですら何も考えずに書いたらCPUより遅いという
しかしかんばれば6000倍の高速化というのは魅力……
230デフォルトの名無しさん (ワッチョイ 27db-bbb7)
2026/03/01(日) 09:11:17.17ID:QurfzvSr0 ラプラス変換とか理解できる頭じゃないとな
231デフォルトの名無しさん (オイコラミネオ MMbd-x5Ow)
2026/03/19(木) 13:24:33.58ID:OW6NEtvkM Xでは嫌がらせでC++で検索できないが、FaceBook だと「C, C++ Projects and tasks」というグループに
メンバーが56.6万人いる。Rust は、最大のグループの「Rust Developers」でも、1.1万人しかいない。
メンバーが56.6万人いる。Rust は、最大のグループの「Rust Developers」でも、1.1万人しかいない。
232デフォルトの名無しさん (ワッチョイ aba1-ohi4)
2026/03/19(木) 15:35:52.85ID:uMbiE9EB0 嫌がらせですか
233はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b5f8-AYvS)
2026/03/19(木) 18:06:18.21ID:UR+Iiml10 むしろ C++ と名付けたやつが嫌がらせだろ。
234デフォルトの名無しさん (ワッチョイ 47fe-0zda)
2026/03/19(木) 18:39:19.70ID:eWRiknk60 昔やってたゲームに「****」って曲があったんだけどタイトルのせいで全然検索に引っかからないの思い出した
235デフォルトの名無しさん (オイコラミネオ MM4b-x5Ow)
2026/03/20(金) 01:06:25.94ID:cK3UAy7SM いいこちゃんばっかりで、わざと検索できなくしていることが理解できないんだね。
236デフォルトの名無しさん (ワッチョイ bb34-smPG)
2026/03/20(金) 01:13:54.78ID:TSAVJgdb0 C++が名付けられた時点でWeb検索なんて無かっただろ
MS-DOSはファイル名に+が使えなかったのでアンチDOSな意図はあったかもしれないが、結果拡張子は乱立したな
MS-DOSはファイル名に+が使えなかったのでアンチDOSな意図はあったかもしれないが、結果拡張子は乱立したな
237デフォルトの名無しさん (オイコラミネオ MM4b-x5Ow)
2026/03/20(金) 01:15:46.68ID:cK3UAy7SM C++ の方がわざとやっているのではなく、X の方が検索できないのをわざと放置しているんだよ。
直そうと思えば直せるのに直してない。
直そうと思えば直せるのに直してない。
238デフォルトの名無しさん (ワッチョイ bb34-smPG)
2026/03/20(金) 01:21:23.15ID:TSAVJgdb0 そっちか。>>233-234に引きずられたようだすまんな
239デフォルトの名無しさん (JP 0H63-sFF2)
2026/03/20(金) 13:11:02.01ID:iXoBkJ/YH C/C++についてならPHPが出た頃に一気に検索精度落ちた気がする
240デフォルトの名無しさん (オイコラミネオ MMbd-x5Ow)
2026/03/20(金) 18:04:57.02ID:sEnh3i/SM >>239
Googleの場合、検索窓に「C」「C++」とかも一緒に入れていると PHP と混同せずに検索できるよね。
Googleの場合、検索窓に「C」「C++」とかも一緒に入れていると PHP と混同せずに検索できるよね。
241デフォルトの名無しさん (アウアウ Sa9b-13eO)
2026/03/20(金) 19:26:18.69ID:2s9p7rm9a そもそもX(旧Twitter)の検索は昔からいまひとつだったのが
ここ最近のアプデでガチでまるで使えない状態になってるのだ
ここ最近のアプデでガチでまるで使えない状態になってるのだ
242デフォルトの名無しさん (ワッチョイ b5cd-2zvD)
2026/03/21(土) 00:43:13.05ID:Tywu3RMI0 Xで何を期待してc++で検索するん?
その発想が謎すぎる
その発想が謎すぎる
243デフォルトの名無しさん (オイコラミネオ MM4b-x5Ow)
2026/03/21(土) 01:06:03.79ID:6lzvvI/BM >>242
どのように使われてるかの調査。
どのように使われてるかの調査。
244デフォルトの名無しさん (ワッチョイ cfba-lUiP)
2026/03/21(土) 01:12:17.64ID:npR0dtyV0 あの肥溜めで何の調査?
245デフォルトの名無しさん (オイコラミネオ MMbd-x5Ow)
2026/03/21(土) 10:31:43.57ID:od9qWUfrM >>244
匿名性掲示板よりかなりちゃんとしてる。ほとんど誹謗中傷も無いし。
匿名性掲示板よりかなりちゃんとしてる。ほとんど誹謗中傷も無いし。
246デフォルトの名無しさん (ワッチョイ 1795-mhxB)
2026/03/24(火) 12:08:59.14ID:bF1kMWlt0 草
247デフォルトの名無しさん (ワッチョイ 9a6a-8mSL)
2026/03/28(土) 20:16:21.04ID:6BxCcDUv0 相談室もいまやAI()のほうが使い勝手いいからなあ
すぐに返ってくるし、コードも書いてくれる
もちろん間違っている場合も多いが、それはここも変わらん
すぐに返ってくるし、コードも書いてくれる
もちろん間違っている場合も多いが、それはここも変わらん
248デフォルトの名無しさん (ワッチョイ cafb-j+jh)
2026/03/28(土) 21:59:48.76ID:KqDsCgo40 いままではGoogleで検索してStackoverflowや個人開発者のブログを読んで回って解決策やサンプルコード探してたのに
いまはGoogle検索の先頭にAIの回答やサンプルコードが出てくるんだよね
すごい時代になったもんだ
いまはGoogle検索の先頭にAIの回答やサンプルコードが出てくるんだよね
すごい時代になったもんだ
249デフォルトの名無しさん (ブーイモ MMb3-R7Jw)
2026/03/29(日) 08:14:13.45ID:Tqn250KaM 度忘れを検索する程度なら、だいたい当ててくるんだよな
「あーそれそれ、それでいいわ」程度のことなら、あのおまけのAIでいける
俺の愚問に毎度大量に電気喰ってるような気がしないでもないがw
「あーそれそれ、それでいいわ」程度のことなら、あのおまけのAIでいける
俺の愚問に毎度大量に電気喰ってるような気がしないでもないがw
250デフォルトの名無しさん (ワッチョイ 9325-ASpQ)
2026/03/29(日) 11:50:30.81ID:qGldwEbX0 AIは参考にする為にこのスレ見てるかも
251デフォルトの名無しさん (ワッチョイ 1959-WB82)
2026/03/29(日) 13:34:01.27ID:aLQuosVy0 ロクな育ち方しなそうで草
252デフォルトの名無しさん (ブーイモ MM4b-igkI)
2026/03/29(日) 14:00:17.27ID:3Jc2pBQrM 今のところc++をAIに書かせたことないけどメモリオーダーとか理解して安全なロックフリー実装とかできんのかな
他言語でもマイクロオプティマイズに関してはAIは弱い印象
余裕でAIにダメ出ししてるわ
他言語でもマイクロオプティマイズに関してはAIは弱い印象
余裕でAIにダメ出ししてるわ
253デフォルトの名無しさん (ワッチョイ db34-VJaZ)
2026/03/29(日) 14:04:21.38ID:qtJ5xSDB0 並列プログラミングの微妙なニュアンスを言葉にして伝えるぐらいならコード書いたほうが早くね…?
AIにはデバッグのほうを手伝ってもらえば
AIにはデバッグのほうを手伝ってもらえば
254デフォルトの名無しさん (ブーイモ MM4b-igkI)
2026/03/29(日) 14:23:48.17ID:3Jc2pBQrM >>253
それは並列に限らずどの領域でも言えるだろ
少なくともおれよりAIの方がコーディングスピードは上だから任せられるなら任せたい
あと網羅性の点でもAIの目聡さは評価できる
おれならテストしてようやく気づくような例外ケースも最初から考慮にいれていることが多い
それは並列に限らずどの領域でも言えるだろ
少なくともおれよりAIの方がコーディングスピードは上だから任せられるなら任せたい
あと網羅性の点でもAIの目聡さは評価できる
おれならテストしてようやく気づくような例外ケースも最初から考慮にいれていることが多い
255デフォルトの名無しさん (ブーイモ MMb3-R7Jw)
2026/03/29(日) 14:47:18.40ID:Tqn250KaM 生ポを使うなって指示したらだめなんか
256デフォルトの名無しさん (ワッチョイ b11d-Cl87)
2026/03/29(日) 15:44:21.70ID:QigkLd7x0 楽しいプログラミングがAIに奪われ、苦しいデバッグが人間に押し付けられている現実
AI導入で品質維持のコストは増える
AI企業経営者は、裸の王様に透明な服を売りつける仕立て屋の能力が高い
AI導入で品質維持のコストは増える
AI企業経営者は、裸の王様に透明な服を売りつける仕立て屋の能力が高い
257デフォルトの名無しさん (ワッチョイ 5b09-igkI)
2026/03/29(日) 17:22:31.91ID:ogom/qKE0 意味不明
なぜ人がやるより品質維持のコストが増える?
素人がバイブコーディングする話とプロがAI使う話をごっちゃにしてるだろ
なぜ人がやるより品質維持のコストが増える?
素人がバイブコーディングする話とプロがAI使う話をごっちゃにしてるだろ
258デフォルトの名無しさん (ブーイモ MM4b-WB82)
2026/03/29(日) 17:29:43.33ID:zNJVhBJrM せめて売りつける相手は女王様にしてほしぃ
259デフォルトの名無しさん (ワッチョイ b11d-Cl87)
2026/03/29(日) 17:51:24.67ID:QigkLd7x0 >>257
プロと素人の違いは給料の有無でしかないから、プロがいるとコストが大きくなってしまう現実
プロと素人の違いは給料の有無でしかないから、プロがいるとコストが大きくなってしまう現実
260デフォルトの名無しさん (ワッチョイ b11d-Cl87)
2026/03/29(日) 18:45:22.84ID:QigkLd7x0 AIを使うと頭が悪くなる?「脳の疲弊」を防いでより賢くなるための正しい付き合い方 | Forbes JAPAN 公式サイト(フォーブス ジャパン)
https://forbesjapan.com/articles/detail/94246
https://forbesjapan.com/articles/detail/94246
261デフォルトの名無しさん (ワッチョイ 5b09-igkI)
2026/03/29(日) 19:35:26.95ID:ogom/qKE0262デフォルトの名無しさん (アウアウウー Sa05-H1dW)
2026/03/29(日) 19:38:26.75ID:60xioQbFa AI「書き書き〜。これが私の考えたコードです!次は何を実装します?」
ボク「ここはおかしいやろ。こうしないと不味い。」
AI「その指摘、まさに正論です!鋭いですね。」
ボク(うるせー黙れわかってたなら最初からやっとけ電気の無駄遣いすんなカス)
ボク「ここはおかしいやろ。こうしないと不味い。」
AI「その指摘、まさに正論です!鋭いですね。」
ボク(うるせー黙れわかってたなら最初からやっとけ電気の無駄遣いすんなカス)
263デフォルトの名無しさん (ワッチョイ b11d-Cl87)
2026/03/29(日) 19:55:26.38ID:QigkLd7x0 【衝撃】AIはまだ生産性を上げていない?エコノミスト誌が暴く「AI革命」の不都合な真実|奥山真司の地政学「アメリカ通信」 - YouTube
https://www.youtube.com/watch?v=JKuzhoRqbBw
https://www.youtube.com/watch?v=JKuzhoRqbBw
264デフォルトの名無しさん (ブーイモ MMb3-R7Jw)
2026/03/30(月) 01:09:19.82ID:n7xZBPS2M まだ移行期だからな なんだかんだあるさ
当面の課題は…RAMの高騰だわw
当面の課題は…RAMの高騰だわw
265デフォルトの名無しさん (ワッチョイ b11d-Cl87)
2026/03/30(月) 01:51:32.74ID:kBCZPTyr0 人間「○○するコードを書いたのでデバッグよろ、改善点などあれば挙げて」
AI「かしこまりました」
みたいな関係じゃないとだめだなんだけど、AIに学習させるために手取り足取り教える羽目になっている
金払ってAIに教育してるお人よしなバカが真っ先にリストラされる
AI「かしこまりました」
みたいな関係じゃないとだめだなんだけど、AIに学習させるために手取り足取り教える羽目になっている
金払ってAIに教育してるお人よしなバカが真っ先にリストラされる
266デフォルトの名無しさん (ワッチョイ 5b09-igkI)
2026/03/30(月) 02:46:22.35ID:BRBLO8xy0 そんなわけない
AI使ってないやつはそもそも論外
AIを使いたおして再現性のある開発手法を確立したやつが勝者
AI使ってないやつはそもそも論外
AIを使いたおして再現性のある開発手法を確立したやつが勝者
267デフォルトの名無しさん (アウアウウー Sa05-H1dW)
2026/03/30(月) 04:50:58.88ID:zCsuxdbqa AI、戦争止めて来い
268デフォルトの名無しさん (オイコラミネオ MM65-CAFo)
2026/03/30(月) 04:55:59.54ID:HHKxr0KtM AIは、メモリー解放に関して危険なコードを書くことが多いようだ。
Win32 の場合、他のEXEのリソースを閲覧するために LoadLibraryEx() で HANDLE hModule を取得し、
リソースの構造体取得した場合、ID に整数IDと文字列 ID を共通化した LPCSTR 型のような変数が使われていることが有る。
それは、FreeLibrary() を呼び出すまでだけ有効な筈だが、FreeLibrary() を読んだ後も参照してしまうコードを
出してきたことが有る。
以前も、Shell API のパスの IDL で、先頭ではなく中間的な部分だけを配列変数に入れてしまい、
その変数のアドレスに対して解放関数を呼び出しているコードを書いてきた。
そのコードでは中間的な部分のアドレスも必要であはったが、開放するのは先頭アドレスでなくてはならない。
だから面倒でも両方のアドレスを記録しておく必要があったのだが、AI は、先頭アドレスを記憶せず、
中間的なドレスだけを記録してしまった。そして、最後に中間的なアドレスの方をメモリー解放関数に渡していた。
Win32 の場合、他のEXEのリソースを閲覧するために LoadLibraryEx() で HANDLE hModule を取得し、
リソースの構造体取得した場合、ID に整数IDと文字列 ID を共通化した LPCSTR 型のような変数が使われていることが有る。
それは、FreeLibrary() を呼び出すまでだけ有効な筈だが、FreeLibrary() を読んだ後も参照してしまうコードを
出してきたことが有る。
以前も、Shell API のパスの IDL で、先頭ではなく中間的な部分だけを配列変数に入れてしまい、
その変数のアドレスに対して解放関数を呼び出しているコードを書いてきた。
そのコードでは中間的な部分のアドレスも必要であはったが、開放するのは先頭アドレスでなくてはならない。
だから面倒でも両方のアドレスを記録しておく必要があったのだが、AI は、先頭アドレスを記憶せず、
中間的なドレスだけを記録してしまった。そして、最後に中間的なアドレスの方をメモリー解放関数に渡していた。
269デフォルトの名無しさん (オイコラミネオ MM65-CAFo)
2026/03/30(月) 04:58:19.21ID:HHKxr0KtM >>268
誤: そのコードでは中間的な部分のアドレスも必要であはったが、開放するのは先頭アドレスでなくてはならない。
正: そのコードでは中間的な部分のアドレスも必要ではあったが、解放するのは先頭アドレスでなくてはならない。
誤: そのコードでは中間的な部分のアドレスも必要であはったが、開放するのは先頭アドレスでなくてはならない。
正: そのコードでは中間的な部分のアドレスも必要ではあったが、解放するのは先頭アドレスでなくてはならない。
270デフォルトの名無しさん (オイコラミネオ MM65-CAFo)
2026/03/30(月) 05:04:45.42ID:HHKxr0KtM >>268
前半部分についてもう少し詳しく書いておくと、
既存のリソースのIDを全て列挙するために、Win32 のリソース関連の Enum 系の関数を使い、コールバック関数の中で、
リソースID を、std::vector<XXX> のグローバル変数に push_back() していた。
列挙が済んだら時点で FreeLibrary() を実行。
その後に、そのリソースID を、グローバル変数の std::vector<XXX> から取得して利用する、
といようなコードになっていた。
前半部分についてもう少し詳しく書いておくと、
既存のリソースのIDを全て列挙するために、Win32 のリソース関連の Enum 系の関数を使い、コールバック関数の中で、
リソースID を、std::vector<XXX> のグローバル変数に push_back() していた。
列挙が済んだら時点で FreeLibrary() を実行。
その後に、そのリソースID を、グローバル変数の std::vector<XXX> から取得して利用する、
といようなコードになっていた。
271デフォルトの名無しさん (オイコラミネオ MM65-CAFo)
2026/03/30(月) 05:16:22.96ID:HHKxr0KtM >>270
[さらに補足]
>リソースの構造体取得した場合、ID に整数IDと文字列 ID を共通化した LPCSTR 型のような変数が使われていることが有る。
>それは、FreeLibrary() を呼び出すまでだけ有効な筈だが、FreeLibrary() を読んだ後も参照してしまうコードを
>出してきたことが有る。
とあることのために、(自分のアプリでは無い)EXEの中のある種類のリソースを入れ替えたかったのだが、
そのEXEの中の既存のリソースを全て削除してから追加する作業をする必要があった。
Update や削除している最中には、当然予想されることとして、IDが文字列IDだった場合、「文字列ID」は破壊されてしまう
可能性がある。
削除したリソースの ID だけでなく、他の文字列 ID に対してもアドレス自体が変わってしまう可能性があるため、
他の文字列IDも含めて、全体的に文字列 ID(文字列へのアドレス)が無効になってしまう可能性も考えられる。
仕様書に書いてあるかどうかは不明だが、ある種の常識としてその危険性が想定される。
AI は、そういうことも配慮が難しいようだ。
[さらに補足]
>リソースの構造体取得した場合、ID に整数IDと文字列 ID を共通化した LPCSTR 型のような変数が使われていることが有る。
>それは、FreeLibrary() を呼び出すまでだけ有効な筈だが、FreeLibrary() を読んだ後も参照してしまうコードを
>出してきたことが有る。
とあることのために、(自分のアプリでは無い)EXEの中のある種類のリソースを入れ替えたかったのだが、
そのEXEの中の既存のリソースを全て削除してから追加する作業をする必要があった。
Update や削除している最中には、当然予想されることとして、IDが文字列IDだった場合、「文字列ID」は破壊されてしまう
可能性がある。
削除したリソースの ID だけでなく、他の文字列 ID に対してもアドレス自体が変わってしまう可能性があるため、
他の文字列IDも含めて、全体的に文字列 ID(文字列へのアドレス)が無効になってしまう可能性も考えられる。
仕様書に書いてあるかどうかは不明だが、ある種の常識としてその危険性が想定される。
AI は、そういうことも配慮が難しいようだ。
272デフォルトの名無しさん (オイコラミネオ MM65-CAFo)
2026/03/30(月) 05:21:13.62ID:HHKxr0KtM >>271
>とあることのために、(自分のアプリでは無い)EXEの中のある種類のリソースを入れ替えたかったのだが、
誤解を招きそうなので断っておくが、「自分のアプリでは無い」と書いたが、実際には、リソース修正用の自作アプリ
そのものではなかったが、リソースを入れ替えたかった EXE も、自分が作ったアプリ。
他の人の作った EXE のリソースを改竄しようとしたわけではない。
「リソースを変更するために作った実行中の EXE ではない」という意味で「自分のアプリでは無い」と書いてしまった。
「自分」とは「リソースを変更す作業を行うために作ったアプリのEXE」の事で書いてしまった。
また、入れ替えたかったリソースは画像関連のものであり、アプリの実行を買えるようなものではない。
>とあることのために、(自分のアプリでは無い)EXEの中のある種類のリソースを入れ替えたかったのだが、
誤解を招きそうなので断っておくが、「自分のアプリでは無い」と書いたが、実際には、リソース修正用の自作アプリ
そのものではなかったが、リソースを入れ替えたかった EXE も、自分が作ったアプリ。
他の人の作った EXE のリソースを改竄しようとしたわけではない。
「リソースを変更するために作った実行中の EXE ではない」という意味で「自分のアプリでは無い」と書いてしまった。
「自分」とは「リソースを変更す作業を行うために作ったアプリのEXE」の事で書いてしまった。
また、入れ替えたかったリソースは画像関連のものであり、アプリの実行を買えるようなものではない。
273デフォルトの名無しさん (ワッチョイ e993-WB82)
2026/03/30(月) 07:42:43.98ID:ZkyeK4bI0274デフォルトの名無しさん (ワッチョイ f1e2-H1dW)
2026/03/30(月) 09:25:56.98ID:5wdn67hL0 ドレス
275デフォルトの名無しさん (ワッチョイ f1e2-H1dW)
2026/03/30(月) 09:27:47.50ID:5wdn67hL0 >AI は、そういうことも配慮が難しいようだ。
AIはそういうことは配慮しない
AIはそういうことは配慮しない
276デフォルトの名無しさん (ワッチョイ f91d-Cl87)
2026/03/30(月) 12:12:43.44ID:djt4okOl0 >AIを使いたおして再現性のある開発手法を確立したやつが勝者
違うな
AIを使いたおして再現性のある開発手法を確立したやつを雇っていたやつが勝者
違うな
AIを使いたおして再現性のある開発手法を確立したやつを雇っていたやつが勝者
277デフォルトの名無しさん (ワッチョイ 497a-eJ8z)
2026/03/30(月) 13:47:22.47ID:/WOjEIro0 出力量がヒトと桁違いなのでいかにこれを上手に利用するかというゲームになっている
278デフォルトの名無しさん (ワッチョイ f91d-Cl87)
2026/03/30(月) 15:40:11.69ID:72GWB1/f0 低性能ドローンの大群による飽和攻撃を迎撃すべく高性能な精密兵器を使う非対称戦によく似てて面白いね
279デフォルトの名無しさん (ワイーワ2 FFa3-H1dW)
2026/03/31(火) 11:41:01.87ID:9sTeuD0WF DDOSの反撃には使えそう
280デフォルトの名無しさん (ワッチョイ ca25-Myo1)
2026/04/06(月) 08:51:41.56ID:k99Sv6HP0 cudaはC/C++使ってんだから
コンパクトで高性能を追求するなら
こっちなんだろうけど
でも現場ではPythonなんだよな
コンパクトで高性能を追求するなら
こっちなんだろうけど
でも現場ではPythonなんだよな
281デフォルトの名無しさん (ワッチョイ 05a6-1rQb)
2026/04/06(月) 10:08:03.40ID:aOgsjhir0 Pythonで計算論理を記述するけど、実計算はC/C++なんでしょ 全然しらんけど
282デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/06(月) 11:03:05.09ID:kRlsz3gh0 pythonがチヤホヤされてるのでどれどれと試したけど、
マルチスレッド処理が遅くてガッカリした記憶しかないわ
やたらpythonをほめる人の気が知れない
マルチスレッド処理が遅くてガッカリした記憶しかないわ
やたらpythonをほめる人の気が知れない
283デフォルトの名無しさん (ワッチョイ a9cc-qTyV)
2026/04/06(月) 12:04:47.48ID:oPml/pyZ0 Numpy、Pandas、PyTorchぐらいは使ってからPythonを語りな
あとJupyter notebookとかさ
使ったことないのはエンジニアとしてダサすぎる
あとJupyter notebookとかさ
使ったことないのはエンジニアとしてダサすぎる
284デフォルトの名無しさん (ワッチョイ 39e7-XPKe)
2026/04/06(月) 12:12:27.70ID:NfIdJS0i0 Pythonは好きだけど、それは「楽に読める・書ける」という点であって、単体の性能ではそりゃ大幅に見劣りするのは当然じゃないかと。
285デフォルトの名無しさん (ワッチョイ 86e5-rymk)
2026/04/06(月) 12:16:54.12ID:AlX6s9FN0 >>282
用途を間違うのがださい
用途を間違うのがださい
286デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/06(月) 12:35:24.40ID:kRlsz3gh0 ライブラリを使う人とライブラリを作る人で見え方がまったく違うのはしかたない
287デフォルトの名無しさん (ワッチョイ 16aa-RHh+)
2026/04/06(月) 13:48:09.02ID:3I9e1Dxk0 性能劣っていいならBASICがいいんだが
288デフォルトの名無しさん (ワッチョイ 86a1-2RjV)
2026/04/06(月) 21:51:37.70ID:W+LGbPHz0 それでいいのなら、それで構わない。
289はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 29f8-odXn)
2026/04/07(火) 08:45:40.77ID:wKJkoA5G0 言語の良し悪しもあるけどエコシステムが充実していることも必要だよ。
ライブラリを組み合わせるグルー言語としての性質を利用するならライブラリを導入しやすいパッケージマネージャやバンドラがまともじゃないと話にならない。
言語として BASIC が良いなら Visual Basic .NET あたりが良かろう。
ライブラリを組み合わせるグルー言語としての性質を利用するならライブラリを導入しやすいパッケージマネージャやバンドラがまともじゃないと話にならない。
言語として BASIC が良いなら Visual Basic .NET あたりが良かろう。
290デフォルトの名無しさん (ワッチョイ 39b0-Y1gY)
2026/04/07(火) 09:30:47.10ID:BouVe5qh0 Pythonの流行した当時はUNIX互換環境でまともに使えるインタプリタ言語なんてPerlとshくらいしかなかったし
構造的に書けるだけである程度インパクトがあった
それを20年以上引きずってるだけ
構造的に書けるだけである程度インパクトがあった
それを20年以上引きずってるだけ
291デフォルトの名無しさん (ワッチョイ 217a-Px4D)
2026/04/07(火) 10:13:39.47ID:chYlTkry0 Pythonの流行しだしたときに(日本だけ?)勢いがあったのはrubyだったと思う
292デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/07(火) 10:15:03.79ID:brkQfBH60 Pythonでスクリプト組んだは良いが速度に満足できずC++11以降で書き直すことになる
293デフォルトの名無しさん (ワッチョイ a9a5-qTyV)
2026/04/07(火) 11:23:49.10ID:pYxxuZfJ0 >>292
c++に書き直せるレベルのしょぼいものしか作ってないって白状してるようなもの
c++に書き直せるレベルのしょぼいものしか作ってないって白状してるようなもの
294デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/07(火) 12:22:43.32ID:brkQfBH60 >>293
Cやアセンブラに書き直せるレベルならOKってこと?
Cやアセンブラに書き直せるレベルならOKってこと?
295デフォルトの名無しさん (ワッチョイ 3e34-CuSG)
2026/04/07(火) 20:54:47.29ID:lXV8OABn0 リフレクションやダックタイピングを駆使しないとpythonを使いこなしてることにはならない(キリッ
みたいな宗派でしょ
みたいな宗派でしょ
296デフォルトの名無しさん (ブーイモ MMea-qTyV)
2026/04/07(火) 21:15:17.58ID:h0Sx7YJpM PythonおせーからC++とは普通ならんわな
最初のチョイス間違ってる
最初のチョイス間違ってる
297はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 25eb-ebMQ)
2026/04/07(火) 21:23:34.37ID:Opzbg5Fd0 可能なら先に見積もるのが望ましいけど常にはっきりわかるというわけでもないだろう。
検証のためにプロトタイプを Python で作ることも無いとは言えないんじゃね?
Python を使ったことがないからプロトタイプ用にどれくらい適しているかは知らんけど。
検証のためにプロトタイプを Python で作ることも無いとは言えないんじゃね?
Python を使ったことがないからプロトタイプ用にどれくらい適しているかは知らんけど。
298デフォルトの名無しさん (ワッチョイ 29ba-GKvP)
2026/04/07(火) 23:41:26.35ID:3+plfwss0 perlが糞すぎて辟易してたからPython出始めの頃は感動したもんだ
299デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/08(水) 00:42:49.66ID:9ba3ogDj0 とりあえずCythonなにそれうまいのまで読んだ
300デフォルトの名無しさん (ワッチョイ ca25-M/hT)
2026/04/08(水) 06:54:05.97ID:J94Rhcm50301デフォルトの名無しさん (ワッチョイ ca25-M/hT)
2026/04/08(水) 06:55:27.99ID:J94Rhcm50302デフォルトの名無しさん (ワッチョイ a956-rio7)
2026/04/08(水) 08:32:02.06ID:/YHKUCUx0 pythonが使われているのは良くも悪くもガバガバなのと、過去のライブラリ蓄積のおかげじゃない?
個人的にはNimの方が優れていると思うけど、惰性にはなかなか勝てない。
個人的にはNimの方が優れていると思うけど、惰性にはなかなか勝てない。
303デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/08(水) 09:22:50.46ID:1nbgZ9OK0 Perlはバッファデータが文字化けしてても処理続行してくれるけど、Pythonはすぐに例外スローするので文字コード処理は不便
304デフォルトの名無しさん (ワッチョイ 86a1-2RjV)
2026/04/08(水) 10:19:32.84ID:OZGOB4N70 >>299
発音がむずくて知られてないかも説
発音がむずくて知られてないかも説
305デフォルトの名無しさん (ワイーワ2 FFf2-rymk)
2026/04/08(水) 10:55:31.17ID:ydGAkrspF306デフォルトの名無しさん (ワッチョイ ca25-Myo1)
2026/04/08(水) 13:40:35.89ID:yMvtqTZu0 おまいらpythonはC++で書かれてるんだぞ
307デフォルトの名無しさん (ラクッペペ MMde-93xu)
2026/04/08(水) 17:21:55.08ID:QB3ESTq9M GUIアプリはいまだC++で作ってるけど
CUIはもうPythonで作るようになったワイ
CUIはもうPythonで作るようになったワイ
308デフォルトの名無しさん (ブーイモ MMea-qTyV)
2026/04/08(水) 18:34:51.99ID:tWUvF42vM CUIって単語もう使わんよね
ジジイ味を感じる
ジジイ味を感じる
309デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/08(水) 18:51:48.02ID:1nbgZ9OK0310デフォルトの名無しさん (ブーイモ MMea-qTyV)
2026/04/08(水) 19:14:44.60ID:tWUvF42vM 今時CLIっていうのが普通だよ
昨今のコーディングAIツールもそういう名称になってるだろ?
まさか使ってないの?
そもそも英語圏でCUIという言葉がもともとマイナー
Googleトレンドでも見てみろよ
老いて情報収集してないからそういう昔覚えた言葉にロックインされたままになってる
教えてもらったんだから感謝しな
昨今のコーディングAIツールもそういう名称になってるだろ?
まさか使ってないの?
そもそも英語圏でCUIという言葉がもともとマイナー
Googleトレンドでも見てみろよ
老いて情報収集してないからそういう昔覚えた言葉にロックインされたままになってる
教えてもらったんだから感謝しな
311デフォルトの名無しさん (ワッチョイ 651d-2RjV)
2026/04/08(水) 19:20:30.93ID:1nbgZ9OK0 >今時CLIっていうのが普通だよ
言わないぞ
スレ違いなのでこの話題はおしまい
言わないぞ
スレ違いなのでこの話題はおしまい
312はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 258a-ebMQ)
2026/04/08(水) 20:04:26.45ID:VY5WA6UT0 CUI と CLI は違うものだよ。
313デフォルトの名無しさん (オッペケ Sr6d-1rQb)
2026/04/08(水) 20:09:45.40ID:XevV17Wkr314デフォルトの名無しさん (アウアウキー Sa85-fCp/)
2026/04/08(水) 20:15:28.16ID:VbLZ80/Ia まあ一般的なプログラマ認識として CUI と CLI はほぼ同じもんっていう認識だわなぁ
あえて厳密にいうなら大昔の Borland の Turbo Vision でつくったようなツール(もうガチでわしらみたいな老人しか知らんか・・・)
みたいなのが CUI で、コマンドラインで標準入出力だけで動作するツールが CLI てなところかね
あえて厳密にいうなら大昔の Borland の Turbo Vision でつくったようなツール(もうガチでわしらみたいな老人しか知らんか・・・)
みたいなのが CUI で、コマンドラインで標準入出力だけで動作するツールが CLI てなところかね
315デフォルトの名無しさん (オッペケ Sr6d-1rQb)
2026/04/08(水) 20:31:53.80ID:XevV17Wkr tvをCUIというかはちょっと微妙…w (速攻釣られとくw
316はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 258a-ebMQ)
2026/04/08(水) 21:05:42.31ID:VY5WA6UT0 TUI という言葉が生まれてしまったのも状況をややこしくしてるが CUI はデザインに関係なくテキスト画面を使ったインターフェイス全般を包括する用語と解釈すべきで、 CLI も TUI も CUI の一種ではあるだろう。
Windows だと実行ファイルの中のフラグで CUI か GUI かを指定する仕組みだからそれで CUI が指定されているもの (または Windows 以外でもそれに相当するような動作をするもの) を CUI と私は認識してる。
Windows だと実行ファイルの中のフラグで CUI か GUI かを指定する仕組みだからそれで CUI が指定されているもの (または Windows 以外でもそれに相当するような動作をするもの) を CUI と私は認識してる。
317デフォルトの名無しさん (ワッチョイ 0ae9-QjpC)
2026/04/08(水) 21:20:53.34ID:mnPm3/Nt0 webアプリはcuiなんよね
318デフォルトの名無しさん (ワッチョイ 4a6a-abPH)
2026/04/08(水) 21:43:40.25ID:2ds8KOmg0 TurboVisionはCUA(Common User Access)なのでは
319デフォルトの名無しさん (ワッチョイ da80-LZ/T)
2026/04/08(水) 21:51:49.15ID:TRN3YLbe0 curses や vi は CLI ではなくCUI だね
320デフォルトの名無しさん (ワッチョイ 86a1-2RjV)
2026/04/08(水) 22:27:07.44ID:OZGOB4N70 カーセズでアプリ作りたかったなぁ。遠い目
321デフォルトの名無しさん (ワッチョイ 29ba-GKvP)
2026/04/09(木) 00:28:44.12ID:FQhbxq5n0 C++の文脈でCLIと言われるとC++/CLIが先に思い浮かんでしまう
322デフォルトの名無しさん (ワッチョイ 86e5-rymk)
2026/04/10(金) 11:39:43.50ID:1iTYWJHM0 ほんそれ
323デフォルトの名無しさん (オイコラミネオ MMe1-dX7A)
2026/04/10(金) 13:38:12.51ID:9ybhDF05M >>312
どう違うの?
どう違うの?
324デフォルトの名無しさん (ワッチョイ 591d-2RjV)
2026/04/10(金) 14:04:35.61ID:jBjpledE0 コマンドラインはEnterキー入力で命令を送る仕組みでありテキスト対話型AIサービスも含まれる
325デフォルトの名無しさん (ワッチョイ 4a74-qH3C)
2026/04/10(金) 16:56:36.68ID:BElqmliE0 apt, aptitude
326デフォルトの名無しさん (ワッチョイ ca6a-odXn)
2026/04/10(金) 18:32:17.12ID:1WGGK8010327デフォルトの名無しさん (ワッチョイ 3e34-CuSG)
2026/04/10(金) 19:37:08.04ID:AC0gqo4i0 その場合はUIですらないんだからCUIも不当
単なるバックグラウンドプロセスとかサービスとかデーモンとか
単なるバックグラウンドプロセスとかサービスとかデーモンとか
328デフォルトの名無しさん (ワッチョイ a9f1-cytQ)
2026/04/10(金) 19:59:52.50ID:BitphDUy0 コンストラクタで引数をメンバ変数にmoveする場合
Myclass(std::string str)
:member(std::move(str)) {}
としておけばMyclass(std::string&&)は必要ないって理解で正しい?
Myclass(std::string str)
:member(std::move(str)) {}
としておけばMyclass(std::string&&)は必要ないって理解で正しい?
329デフォルトの名無しさん (ブーイモ MMea-qTyV)
2026/04/10(金) 20:16:56.62ID:3cdhJpJvM >>328
strのmove渡しを強制する必要なければそれでいい
strのmove渡しを強制する必要なければそれでいい
330デフォルトの名無しさん (ワッチョイ 21c0-cytQ)
2026/04/11(土) 08:52:57.49ID:KQZClB5Q0 >>329
ありがとうございます。シグネチャ合わないのかと思っていました。
ありがとうございます。シグネチャ合わないのかと思っていました。
331デフォルトの名無しさん (ワッチョイ 16ee-JgiJ)
2026/04/11(土) 15:41:43.74ID:70ztjdOy0332デフォルトの名無しさん (ワッチョイ 53c0-ICvS)
2026/04/12(日) 10:50:47.20ID:bl7FxWlO0 >>331
私も最初そうだと思っていたら、chatGPTに値渡しmoveで両方カバーできると言われたんです。
私も最初そうだと思っていたら、chatGPTに値渡しmoveで両方カバーできると言われたんです。
333デフォルトの名無しさん (ワッチョイ 831d-yrHl)
2026/04/12(日) 11:23:01.26ID:LoVmVFyT0 AIの回答が正しいか自分で調べず匿名掲示板に投げて他人に調べさせる人、今後も増えそうだね
334デフォルトの名無しさん (ワッチョイ 831d-yrHl)
2026/04/12(日) 11:33:00.35ID:LoVmVFyT0 【危険】AI活用で絶対やってはいけない6つのNG行為!信頼を失う「ワークスロップ」の恐怖。組織での予防がこれからのAI展開のカギ - YouTube
https://www.youtube.com/watch?v=SdO9w5i0_nU
https://www.youtube.com/watch?v=SdO9w5i0_nU
335はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b3f8-3QL3)
2026/04/12(日) 11:36:54.43ID:sxZphVNM0 >>328
コピー省略を適用しない素朴な解釈だと参照渡しにしたほうが効率的になる。
https://wandbox.org/permlink/9EZ9rpRBtMucnuQw
しかし C++17 以降ではコピー省略が一部の場合に必須になり、この場合はそれに該当するのでどちらでも同じになる。
https://wandbox.org/permlink/D0akhuHAh6pXHTxE
コピー省略を適用しない素朴な解釈だと参照渡しにしたほうが効率的になる。
https://wandbox.org/permlink/9EZ9rpRBtMucnuQw
しかし C++17 以降ではコピー省略が一部の場合に必須になり、この場合はそれに該当するのでどちらでも同じになる。
https://wandbox.org/permlink/D0akhuHAh6pXHTxE
336デフォルトの名無しさん (ワッチョイ 8f20-MZRz)
2026/04/12(日) 11:39:54.38ID:UzEscM2D0 参照渡しってCPUとかOSによって誤作動の要因にならんの?
はっきり値渡ししたほうがよくないの?
はっきり値渡ししたほうがよくないの?
337デフォルトの名無しさん (ワッチョイ 831d-yrHl)
2026/04/12(日) 12:17:10.17ID:LoVmVFyT0 ヒープで作った巨大な構造体を値渡しするとスタックサイズが
338デフォルトの名無しさん (ワッチョイ b312-8p7k)
2026/04/12(日) 14:26:03.93ID:nJS2m8EI0 安心欲しいならC++は使わんでよろしい
339デフォルトの名無しさん (ワッチョイ 53c0-ICvS)
2026/04/12(日) 22:04:04.47ID:bl7FxWlO0 >>335
ありがとうございます。論より証拠ですね。さすがはちみつさん。C++17以降ならchatGPTの指摘が正しいわけですね
ありがとうございます。論より証拠ですね。さすがはちみつさん。C++17以降ならchatGPTの指摘が正しいわけですね
340デフォルトの名無しさん (ワッチョイ cfa1-yrHl)
2026/04/12(日) 23:28:09.56ID:JgHCvaY20 プリミティブなオブジェクトは値渡しで、それ以外はconst参照がいいってどっかで。
341デフォルトの名無しさん (ワッチョイ b30b-ICvS)
2026/04/13(月) 08:09:39.78ID:M+FvsmoW0 >>333
じきにAI >> 匿名掲示板になって誰も聞かなくなるから大丈夫。stack overflowすら過疎る時代
じきにAI >> 匿名掲示板になって誰も聞かなくなるから大丈夫。stack overflowすら過疎る時代
342デフォルトの名無しさん (ワッチョイ 8ff5-F5O2)
2026/04/13(月) 09:13:29.64ID:gldAIokn0 元々Pythonから入ったけど、今度のプロジェクト(趣味)はもっと単純だからC++でやってみようと思って始めてみら
最初は混乱したけど、慣れると関数の引数と戻り値、型を意識するんで逆にわかりやすいね。
Pythonは名称がわかりやすいから入門で概念が全然わからないうちは良いが何やってるかわからなくなるけど、.hとか別にあると設計と照合しやすい
最初は混乱したけど、慣れると関数の引数と戻り値、型を意識するんで逆にわかりやすいね。
Pythonは名称がわかりやすいから入門で概念が全然わからないうちは良いが何やってるかわからなくなるけど、.hとか別にあると設計と照合しやすい
343はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b3f8-3QL3)
2026/04/13(月) 09:29:24.42ID:MzRvOdFm0 >>339
ChatGPT にそこまで尋ねたなら、どうせならメカニズムまで質問すればいいだろ。
質問さえすればコピー省略についてだって説明してくれたはずだ。
正しいか正しくないかだけ判定させても応用が効かん。
理屈を理解する努力はすべき。 (結果的に理解できるかどうかは知らんけど。)
C++17 以降で一部のコピー省略が必須になったが、それ以前でも許されてはいたので最適化をあてに出来るならあてにするのが間違っているわけではない。
ChatGPT にそこまで尋ねたなら、どうせならメカニズムまで質問すればいいだろ。
質問さえすればコピー省略についてだって説明してくれたはずだ。
正しいか正しくないかだけ判定させても応用が効かん。
理屈を理解する努力はすべき。 (結果的に理解できるかどうかは知らんけど。)
C++17 以降で一部のコピー省略が必須になったが、それ以前でも許されてはいたので最適化をあてに出来るならあてにするのが間違っているわけではない。
344デフォルトの名無しさん (ワッチョイ b337-u5Qp)
2026/04/13(月) 09:38:26.63ID:/tIi4JvC0 いまどきはPythonでも静的に型付けするコードを書く方が多数派じゃない? 言語仕様として強制できる点がメリットという見方はありうるが。
.h を.cppと別に管理する必要があるのは単に時代遅れなだけだよ。だから、モジュールとかが導入されたわけで。
パフォーマンスには圧倒的な差があるからそれだけでC++を使う意味はあるけど、比較のポイントはだいぶズレているような。単にPythonを使いこなせていなかっただけの人に見える。
.h を.cppと別に管理する必要があるのは単に時代遅れなだけだよ。だから、モジュールとかが導入されたわけで。
パフォーマンスには圧倒的な差があるからそれだけでC++を使う意味はあるけど、比較のポイントはだいぶズレているような。単にPythonを使いこなせていなかっただけの人に見える。
345はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b3f8-3QL3)
2026/04/13(月) 10:03:47.15ID:MzRvOdFm0 インターフェイス部分と実装部分に分離するという思想は良いでしょ。
分離の方法としてヘッダを使うのは破綻してるけど。
分離の方法としてヘッダを使うのは破綻してるけど。
346デフォルトの名無しさん (オイコラミネオ MMa7-ke3o)
2026/04/13(月) 10:45:40.98ID:yugc5IEmM >>345
でもJavaのimportとかも、メンドクサイで。
でもJavaのimportとかも、メンドクサイで。
347デフォルトの名無しさん (アウアウウー Sa27-nrF1)
2026/04/13(月) 14:18:55.10ID:gO7FNaFaa Rust使え
348デフォルトの名無しさん (ワッチョイ ff6a-ic2P)
2026/04/13(月) 16:21:15.67ID:nEVNoJ7h0 Delphiとか同じファイル内でインターフェイスと実装の記述が分かれているけどちょっとめんどくせえと思った
でもPythonで別れていないのを見てなげえよって思った
でもPythonで別れていないのを見てなげえよって思った
349デフォルトの名無しさん (ワッチョイ 6f34-riBm)
2026/04/13(月) 16:46:01.07ID:w7utH7RK0 1ファイルを上下分割する形だと、エディタ側に支援がないとくそめんどくさいんだよな(DelphiのIDEには一発で行き来できる操作はもちろんある)
一般的には2ファイルのほうがどのエディタでも普通に編集できて良いと思う
一般的には2ファイルのほうがどのエディタでも普通に編集できて良いと思う
350デフォルトの名無しさん (ワッチョイ f31d-yrHl)
2026/04/13(月) 18:08:17.98ID:Yf6BeJvI0 文字列検索で重複ヒットする安易な命名こそが問題派です
351デフォルトの名無しさん (ワッチョイ ff25-ULeS)
2026/04/13(月) 19:31:40.88ID:V0zyTtVM0352デフォルトの名無しさん (ワッチョイ 6f34-riBm)
2026/04/13(月) 19:38:59.87ID:w7utH7RK0353デフォルトの名無しさん (アウアウウー Sa27-nrF1)
2026/04/14(火) 16:04:41.35ID:F7K01gbya 実行時に違う型入ってても何も起きないね
354デフォルトの名無しさん (ワッチョイ fe43-MAME)
2026/04/19(日) 13:45:35.19ID:XK6T/ydF0 コーディングAIなるものが出てきたな
何やるにもハイスペックPCが必要になってついていけない
何やるにもハイスペックPCが必要になってついていけない
355デフォルトの名無しさん (ワッチョイ fe43-MAME)
2026/04/19(日) 13:47:31.44ID:XK6T/ydF0 スマホアプリでも、高スペック持ちなら猿でも作れる時代
いまだスマホすら持ってない俺様は洋ナシ
いまだスマホすら持ってない俺様は洋ナシ
356デフォルトの名無しさん (オッペケ Sr3b-DrxN)
2026/04/19(日) 15:55:15.46ID:QpsqGLxbr じき、CLI程度でよければ、軽量AIに頼める時代がくるだろ
欲しい機能をぐぐったら、だいたいドンピシャなサンプルが出てくる、みたいな感じだろ
すでに設計まで経験してる人なら、軽量AIを使いこなせる、みたいな未来を想像してる
欲しい機能をぐぐったら、だいたいドンピシャなサンプルが出てくる、みたいな感じだろ
すでに設計まで経験してる人なら、軽量AIを使いこなせる、みたいな未来を想像してる
357デフォルトの名無しさん (ワッチョイ 4b1d-imSf)
2026/04/19(日) 15:55:37.67ID:PEabnKj50 🍐pearというより🥶poor
358デフォルトの名無しさん (アウアウウー Sa47-AZ9P)
2026/04/20(月) 06:23:51.18ID:p1bOR+Kka loopy
359デフォルトの名無しさん (ワッチョイ cf1d-WxWK)
2026/04/26(日) 12:49:17.79ID:bmYc5s3r0 std::equal_range()って比較の所要時間が短い場合はかえって線形検索よりも遅くならない?
360デフォルトの名無しさん (ワッチョイ 8faa-3scA)
2026/04/26(日) 13:23:26.66ID:sOgf2tD30 Nが小さければ線形探索で十分ってのは常識でしょ
361359 (ワッチョイ cf1d-WxWK)
2026/04/27(月) 11:37:58.12ID:sH2rTm4P0 自己解決した
シーケンシャルアクセスが前提のstd::listをstd::equal_range()で使おうとしたのが良くなかった
std::equal_range()の誤用を避けるために、setやmultisetのメンバー関数equal_range()をvectorにも追加しつつstd::equal_range()を非推奨にしたほうがいいのではと思った
シーケンシャルアクセスが前提のstd::listをstd::equal_range()で使おうとしたのが良くなかった
std::equal_range()の誤用を避けるために、setやmultisetのメンバー関数equal_range()をvectorにも追加しつつstd::equal_range()を非推奨にしたほうがいいのではと思った
362デフォルトの名無しさん (ワッチョイ 8ffe-3scA)
2026/04/27(月) 12:20:23.58ID:eqtqQcUJ0 なんだその中途半端な理解は
それはstd::listのデータ構造の問題であって、仮にメンバー関数にしても何も解決しない
それはstd::listのデータ構造の問題であって、仮にメンバー関数にしても何も解決しない
363デフォルトの名無しさん (ワッチョイ cf1d-WxWK)
2026/04/27(月) 14:23:34.50ID:sH2rTm4P0 どういう意味?
364デフォルトの名無しさん (ブーイモ MM5f-3scA)
2026/04/27(月) 15:59:23.55ID:B0t8e6CUM 誤用?じゃあ正しい使い方は何?
365デフォルトの名無しさん (ワッチョイ ff34-Ruxy)
2026/04/27(月) 16:23:01.38ID:vwzVdgR/0 std::equal_rangeをlist用に特殊化するほうがいいのでは
366デフォルトの名無しさん (ワッチョイ 8f1d-WxWK)
2026/04/27(月) 18:09:57.24ID:S160pTIq0 C++20で追加されたstd::random_access_iteratorのサンプルコードのような方法でコンパイル時に警告表示できれば良さそうだけど
https://cpprefjp.github.io/reference/iterator/random_access_iterator.html
https://cpprefjp.github.io/reference/iterator/random_access_iterator.html
367デフォルトの名無しさん (ワッチョイ 8fdd-3scA)
2026/04/28(火) 14:21:20.97ID:Biw07gx10 >>365
だからさ、どう特殊化するんだよ?
std::listで二分探索がO(N)なのは不具合でもなんでもない
お前の都合はお前が解決したらいいだけでライブラリ仕様を変える発想になるのは単なるアタオカ
だからさ、どう特殊化するんだよ?
std::listで二分探索がO(N)なのは不具合でもなんでもない
お前の都合はお前が解決したらいいだけでライブラリ仕様を変える発想になるのは単なるアタオカ
368デフォルトの名無しさん (ワッチョイ ff34-Ruxy)
2026/04/28(火) 19:15:46.37ID:XTpyfiP70369デフォルトの名無しさん (ワッチョイ 8e25-44hg)
2026/05/09(土) 16:40:15.75ID:QcFVtB+q0 ウィンドウを全画面にして、画面最下段に1ドットだけの行をボタンとして作成した時に
マウスカーソルを画面最下段でクリックしても、ボタンを押せないんですが、これって何かの仕様でしょうか
マウスカーソルを画面最下段でクリックしても、ボタンを押せないんですが、これって何かの仕様でしょうか
370デフォルトの名無しさん (ワッチョイ af39-9zKE)
2026/05/09(土) 16:56:31.19ID:iDhBDlFO0 最低限OSとGUIフレームワークぐらいは書かないと誰一人としてわかる人は出てきませんよ
何なら「全画面」の意味だって複数考えられますし
何なら「全画面」の意味だって複数考えられますし
371デフォルトの名無しさん (ワッチョイ 8e25-44hg)
2026/05/09(土) 18:24:52.22ID:QcFVtB+q0 windows11
QT creator
全画面は枠のない状態で、ボーダーレスではない、昔からあるフルスクリーンです
QT creator
全画面は枠のない状態で、ボーダーレスではない、昔からあるフルスクリーンです
372デフォルトの名無しさん (ワッチョイ 4606-Uw6j)
2026/05/09(土) 19:13:29.39ID:5Ty6Srkh0 >>369
何かの仕様か不具合か、発見者の勘違いだろうけど
全画面表示の枠の挙動か
ボタンの境界の挙動か(昔のwindowsの閉じるボタンは見た目よりもクリック判定が大きかったように)
片方だけでは再現しないのか
この辺りの調査は目前にしているあなたが一番楽しめるはずだ
拡大鏡機能や解像度の倍率設定は役に立つかもしれないし使わない方が良いのかもしれない
対岸の火事火事扱いで申し訳ない
何かの仕様か不具合か、発見者の勘違いだろうけど
全画面表示の枠の挙動か
ボタンの境界の挙動か(昔のwindowsの閉じるボタンは見た目よりもクリック判定が大きかったように)
片方だけでは再現しないのか
この辺りの調査は目前にしているあなたが一番楽しめるはずだ
拡大鏡機能や解像度の倍率設定は役に立つかもしれないし使わない方が良いのかもしれない
対岸の火事火事扱いで申し訳ない
373デフォルトの名無しさん (ワッチョイ 8e25-44hg)
2026/05/09(土) 20:51:28.12ID:QcFVtB+q0 QTでボーダーレスフルスクリーン呼び出しの関数を使うと、画面サイズが画面解像度と一致しないのってバグ?
374デフォルトの名無しさん (オイコラミネオ MMe9-hj+4)
2026/05/10(日) 09:44:37.29ID:Z3LCbGbAM >>369
高さが1ドットだけだとボタンとして押す部分が存在しないと解釈されている可能性がある。
高さが1ドットだけだとボタンとして押す部分が存在しないと解釈されている可能性がある。
375デフォルトの名無しさん (オイコラミネオ MMe9-hj+4)
2026/05/10(日) 09:48:50.43ID:Z3LCbGbAM >>374
もう一つの可能性としては、Windowまたは画面の最下段は、マウスのクリックが処理されないのかも知れない。
あるいは、両方の条件が重なった時に、GUIやOSのバグの様なものが出現している可能性もある。
実は、通常行われない条件にした場合、OSにはさまざまなバグが存在する。
経験豊富なプログラマーは、そういうものが沢山あることを知っているので、余りに特殊なことをした場合には
仕様書通りには動かないかも知れない、と悟っている。
もう一つの可能性としては、Windowまたは画面の最下段は、マウスのクリックが処理されないのかも知れない。
あるいは、両方の条件が重なった時に、GUIやOSのバグの様なものが出現している可能性もある。
実は、通常行われない条件にした場合、OSにはさまざまなバグが存在する。
経験豊富なプログラマーは、そういうものが沢山あることを知っているので、余りに特殊なことをした場合には
仕様書通りには動かないかも知れない、と悟っている。
376デフォルトの名無しさん (アウアウウー Sac9-IVHK)
2026/05/11(月) 12:21:49.68ID:83zRqP8Ma [AAAA]B[CCCC]
([と]が枠でBが下に隠れてちょっとだけ見えてるウィンドウだとすると)
AとCはもちろんクリックしたらそのウィンドウが反応するが
Bをクリックしたとき
昔のWindowsはちゃんとBが前面に上がって来たんだが
最近のWindows(8とか10あたりから)Bがどうしてもクリック出来ず
AとかCが反応して困るわ
([と]が枠でBが下に隠れてちょっとだけ見えてるウィンドウだとすると)
AとCはもちろんクリックしたらそのウィンドウが反応するが
Bをクリックしたとき
昔のWindowsはちゃんとBが前面に上がって来たんだが
最近のWindows(8とか10あたりから)Bがどうしてもクリック出来ず
AとかCが反応して困るわ
377デフォルトの名無しさん (ワッチョイ 1b06-rULU)
2026/05/11(月) 13:43:22.37ID:WWe4evK50 win11でウィンドウ最大化してるのに最上辺クリックすると別のウィンドウがアクティブになるのやめてほしい、古めのアプリで発症する
修正されたのか利用アプリが変わったからなのか最近は悩まされていない
修正されたのか利用アプリが変わったからなのか最近は悩まされていない
378デフォルトの名無しさん (ラクッペペ MMcb-guBF)
2026/05/11(月) 14:24:31.92ID:zJYTJxL3M >>376
最近のWindowsは見えない枠があるぞ
最近のWindowsは見えない枠があるぞ
379デフォルトの名無しさん (JP 0H69-8bxb)
2026/05/13(水) 16:41:45.73ID:6j3WIRPfH 枠の外に透明の掴める部分があるけど、以前はそんなもんなくても枠をつかみやすかったし、今の方が使い見づらい
悪化してるねえ
悪化してるねえ
380デフォルトの名無しさん (JP 0H69-8bxb)
2026/05/13(水) 16:59:47.04ID:6j3WIRPfH アンスロピック、評判は最悪の企業だけど、claudecodeの性能は他を圧倒してるなぁ
381デフォルトの名無しさん (ワッチョイ 2325-vfni)
2026/05/13(水) 19:03:07.93ID:gg3G33/o0382デフォルトの名無しさん (ブーイモ MMcb-I6VE)
2026/05/14(木) 07:42:27.00ID:JA2sqImQM ニュースみない自慢か?
383デフォルトの名無しさん (ワッチョイ bd7a-DFFR)
2026/05/14(木) 10:34:42.05ID:OY5EyHSD0 俺もその「最悪な評判」を聞いたことないので聞きたい
384デフォルトの名無しさん (ワッチョイ 6d5a-yWhV)
2026/05/14(木) 16:47:01.43ID:kXfWcw4i0 ニュースでてくるだろ
調べろよ無能
調べろよ無能
385デフォルトの名無しさん (ワッチョイ 6de1-EAS5)
2026/05/14(木) 17:28:11.01ID:d9Ydvw3d0386はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 95a1-TjYy)
2026/05/14(木) 17:58:51.35ID:4/MpZ61J0 Anthropic 社が評判を落とした決定的な理由はいわゆる「影の書庫」だよ。
和解金15億ドルは確認されている著作権訴訟の中では史上最大だそうだ。
違法に流通しているデータを AI の学習に使うのをフェアユースと言い張れると思っていたならいくらなんでも無能だし、違法行為と分かってやったなら邪悪だし、どちらにせよ好意的には見れないだろう。
和解金15億ドルは確認されている著作権訴訟の中では史上最大だそうだ。
違法に流通しているデータを AI の学習に使うのをフェアユースと言い張れると思っていたならいくらなんでも無能だし、違法行為と分かってやったなら邪悪だし、どちらにせよ好意的には見れないだろう。
387デフォルトの名無しさん (ワッチョイ 6de1-EAS5)
2026/05/14(木) 19:28:44.54ID:d9Ydvw3d0 >>386
それなら「影の書庫」は重要なキーワードになるから「ニュースでてくるだろ調べろよ無能」と擬似問題を誘発する無能発言で済ませるのは無能だわな。
「アンスロピック、評判は最悪」ぐらいのキーワードだと「影の書庫」はかすりもしない。
個人的には「AIはツール。AI生成物は学習データの二次著作物」という非主流派なので、こういうのはガンガン取り締まり&AI生成物作者も原著作者に許諾取れ/ライセンスフィーを払え、と思う。
それなら「影の書庫」は重要なキーワードになるから「ニュースでてくるだろ調べろよ無能」と擬似問題を誘発する無能発言で済ませるのは無能だわな。
「アンスロピック、評判は最悪」ぐらいのキーワードだと「影の書庫」はかすりもしない。
個人的には「AIはツール。AI生成物は学習データの二次著作物」という非主流派なので、こういうのはガンガン取り締まり&AI生成物作者も原著作者に許諾取れ/ライセンスフィーを払え、と思う。
388デフォルトの名無しさん (ワッチョイ bd7a-DFFR)
2026/05/14(木) 20:34:46.64ID:OY5EyHSD0389くろみつ (ワッチョイ 2325-vfni)
2026/05/15(金) 06:56:40.52ID:P65DoF/C0390デフォルトの名無しさん (ワッチョイ 2325-qj6G)
2026/05/15(金) 07:09:00.12ID:EX3CF7ic0 機械学習やるなら学習データと教師データのセットは
どこも喉から手が出るほど欲しいもんな
蒸溜も公言してないだけで
みんな裏ではやってるだろ
どこも喉から手が出るほど欲しいもんな
蒸溜も公言してないだけで
みんな裏ではやってるだろ
391デフォルトの名無しさん (ワッチョイ 83ae-ynkz)
2026/05/15(金) 11:03:08.38ID:cGNl/rky0 アンソロピックの評判が悪いところ
・誤課金問題 & サポート対応が悪く返金に応じない
・利用料の引き上げ & 値上げと言わず機能の向上による変更だとか変な言い方してる
・誤課金問題 & サポート対応が悪く返金に応じない
・利用料の引き上げ & 値上げと言わず機能の向上による変更だとか変な言い方してる
392デフォルトの名無しさん (ワッチョイ 83ae-ynkz)
2026/05/15(金) 11:04:10.02ID:cGNl/rky0 X や Reddit でもアンソロピックに不満を持ってる人たくさんいるよ
393デフォルトの名無しさん (スプープ Sd03-gSwr)
2026/05/15(金) 22:10:23.63ID:o7YjhGYwd いいかげんスレ違い。
394デフォルトの名無しさん (JP 0Hd1-i1TM)
2026/05/21(木) 14:18:29.76ID:2Mt5yQQUH 長編が6000くらいあるPNG画像って、どうやってもデコード早くならん?
395デフォルトの名無しさん (アウアウウー Sa39-uJh1)
2026/05/21(木) 23:10:02.00ID:BGV5x8FOa ラインバッファの容量かな
396はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8d35-+AyZ)
2026/05/22(金) 11:58:30.39ID:11+17Ohl0 「早くならん?」というのは「今は遅い」という意味?
遅いというのは何を基準に?
体感的に明らかに遅く感じるだけ?
大きさ相応に遅いのではなく長辺が 6000 くらいになったところで急に遅くなるという意味?
チューニングするならまずはどこが律速箇所なのかを測定するのが通常の手順だよ。
何が起きているのか分析せずにどうすればよいかを判断は出来ない。
遅いというのは何を基準に?
体感的に明らかに遅く感じるだけ?
大きさ相応に遅いのではなく長辺が 6000 くらいになったところで急に遅くなるという意味?
チューニングするならまずはどこが律速箇所なのかを測定するのが通常の手順だよ。
何が起きているのか分析せずにどうすればよいかを判断は出来ない。
397デフォルトの名無しさん (ワッチョイ 91f9-NVeZ)
2026/05/24(日) 06:35:43.21ID:McrvNbHE0 PNGに使用されるzlib deflate自体が
現代となってはあまり速いものでもないかと
filter+deflateが本当にボトルネックなのかどうかも分からないけど
現代となってはあまり速いものでもないかと
filter+deflateが本当にボトルネックなのかどうかも分からないけど
398デフォルトの名無しさん (ブーイモ MM33-h4ty)
2026/05/24(日) 06:55:34.43ID:owyQyMtoM こんなのこそAIだろ…ということで、ぐぐるに投げてみた
おちょくってないぞ、最近、無料のAIを使いこなす練習してるんだ
Q: 長辺が6000px近くあるPNG画像 デコードが遅い チェックポイント
https://share.google/aimode/8JdQcdJYtiixmTfLn
おちょくってないぞ、最近、無料のAIを使いこなす練習してるんだ
Q: 長辺が6000px近くあるPNG画像 デコードが遅い チェックポイント
https://share.google/aimode/8JdQcdJYtiixmTfLn
399デフォルトの名無しさん (ワッチョイ 2b25-HZ6r)
2026/05/24(日) 12:30:10.97ID:iWq3lWQU0 それを要約して3行にまとめろよr
できんやつだな
できんやつだな
400デフォルトの名無しさん (アウアウ Sa8b-jQrU)
2026/05/24(日) 12:35:44.26ID:kTEMkERMa401デフォルトの名無しさん (ワッチョイ 1325-9MTD)
2026/05/24(日) 13:33:57.23ID:aZa6WGcr0 下記のように書いたら、実行時はifの判定しなくなるの?
constexpr int mode = 100;
if (mode == 100) {
std::cout << "aaa";
}
else {
std::cout << "bbb";
}
constexpr int mode = 100;
if (mode == 100) {
std::cout << "aaa";
}
else {
std::cout << "bbb";
}
402デフォルトの名無しさん (ワッチョイ 2b25-HZ6r)
2026/05/24(日) 13:48:17.46ID:iWq3lWQU0 1回だけするだろ
しらんけど
しらんけど
403はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 891b-wjnD)
2026/05/24(日) 13:50:38.35ID:CAV/UxQL0 >>401
mode == 100 は定数式だけど if 自体はコンパイル時文脈ではないので (形式的には) 判定はするよ。
必要なら if constexpr を使うべき。
ただ、モダンな処理系なら最適化で消えるだろうからテキトーでいいよ。
mode == 100 は定数式だけど if 自体はコンパイル時文脈ではないので (形式的には) 判定はするよ。
必要なら if constexpr を使うべき。
ただ、モダンな処理系なら最適化で消えるだろうからテキトーでいいよ。
404デフォルトの名無しさん (ワッチョイ 1325-9MTD)
2026/05/24(日) 13:56:29.44ID:aZa6WGcr0 >>403
そうでしたか。
一応、下記のように書けばいいのかな?
constexpr int mode = 100;
if constexpr(mode == 100) {
std::cout << "aaa";
}
else {
std::cout << "bbb";
}
そうでしたか。
一応、下記のように書けばいいのかな?
constexpr int mode = 100;
if constexpr(mode == 100) {
std::cout << "aaa";
}
else {
std::cout << "bbb";
}
405デフォルトの名無しさん (ワッチョイ 7b06-XD0x)
2026/05/24(日) 14:08:09.28ID:s4jEs3HF0 >>401
手元のg++(gcc14.2)で最適化指定しない場合、判定はしなくなっている
constexpr無し時、逆アセンブルするとcmpl,jne命令があり、callは2箇所
constexpr有り時、cmpl,jne無し、callは1箇所。movl $0x64,-0x4は残っているけど未使用
手元のg++(gcc14.2)で最適化指定しない場合、判定はしなくなっている
constexpr無し時、逆アセンブルするとcmpl,jne命令があり、callは2箇所
constexpr有り時、cmpl,jne無し、callは1箇所。movl $0x64,-0x4は残っているけど未使用
406デフォルトの名無しさん (ワッチョイ 1325-9MTD)
2026/05/24(日) 15:26:17.80ID:aZa6WGcr0407デフォルトの名無しさん (ブーイモ MM33-h4ty)
2026/05/24(日) 15:33:50.38ID:e1P/XaoPM >>400
それもそうだな、と思って、それもぶつけてみた
Q. PNG 圧縮レベル デコード時のCPU負荷への影響
https://share.google/aimode/H2VrXZIItqBQgzZUp
返答の要点は、最高圧縮では、CPUのキャッシュメモリ・分岐予測との相性が悪くなるおそれがある、と。
チェックポイントを聞いたのだから、人間ないしはエージェントがとるべき態度は、
「ほな、実機で圧縮率変えて比べてみるか」だと思う
それもそうだな、と思って、それもぶつけてみた
Q. PNG 圧縮レベル デコード時のCPU負荷への影響
https://share.google/aimode/H2VrXZIItqBQgzZUp
返答の要点は、最高圧縮では、CPUのキャッシュメモリ・分岐予測との相性が悪くなるおそれがある、と。
チェックポイントを聞いたのだから、人間ないしはエージェントがとるべき態度は、
「ほな、実機で圧縮率変えて比べてみるか」だと思う
408デフォルトの名無しさん (スプッッ Sd73-Rit4)
2026/05/27(水) 09:47:07.59ID:ODccCS1Bd pngはzip圧縮だからzip処理にzlib-ng使ったら速くなるんじゃない?
俺もそれで高速化考えたけど、本体はあくまで別アプリから画像処理ライブラリを呼び出すんで、依存改変はメンテナンス大変すぎるからやめたけど。
俺もそれで高速化考えたけど、本体はあくまで別アプリから画像処理ライブラリを呼び出すんで、依存改変はメンテナンス大変すぎるからやめたけど。
409デフォルトの名無しさん (JP 0Hfd-h4v0)
2026/05/27(水) 10:04:21.57ID:IT06qbYXH 今時zip処理は一瞬で終わるでしょ
410デフォルトの名無しさん (スップ Sd33-Rit4)
2026/05/27(水) 18:35:41.31ID:vwhtvXCkd 1画像なら誤差だけど大量に処理するんなら差が出るんじゃねって思った。
画像じゃない別のアプリで使ったけど1.5-2倍くらい差が出た
いや、うろ覚えだから本当は3割くらいだったかもだけどベンチで優位に差が出た
てか、検索したら最大4倍らしいから記憶あってたかも
画像じゃない別のアプリで使ったけど1.5-2倍くらい差が出た
いや、うろ覚えだから本当は3割くらいだったかもだけどベンチで優位に差が出た
てか、検索したら最大4倍らしいから記憶あってたかも
411デフォルトの名無しさん (スップ Sd33-Rit4)
2026/05/27(水) 18:37:28.66ID:vwhtvXCkd まぁ枚数より他の処理との兼ね合いのが重要だろうけど
412はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 91f8-+6pL)
2026/05/28(木) 21:26:41.77ID:OS5CuqqR0 >>404
if での判断をコンパイル時にしたいというのが目的であればいいけどそれが設計的に妥当かどうかは全体を見ないとわからないからね……
もしもモードに応じてコンパイル時に挙動を分けたい箇所がたくさんあったりするならトレイトとして括り出したほうがいいかなとかいうことを私なら検討するかも。
これなら C++03 時代の言語機能でもコンパイル時に分岐できるくらい素朴だし、ロジック本体から分岐を消せるし。
#include <iostream>
template<int mode>
struct mode_traits {
static const char *message;
};
template<int mode> const char* mode_traits<mode>::message="bbb";
template<>
struct mode_traits<100> {
static const char* message;
};
const char* mode_traits<100>::message="aaa";
int main(void) {
const int mode = 100;
std::cout << mode_traits<mode>::message;
}
if での判断をコンパイル時にしたいというのが目的であればいいけどそれが設計的に妥当かどうかは全体を見ないとわからないからね……
もしもモードに応じてコンパイル時に挙動を分けたい箇所がたくさんあったりするならトレイトとして括り出したほうがいいかなとかいうことを私なら検討するかも。
これなら C++03 時代の言語機能でもコンパイル時に分岐できるくらい素朴だし、ロジック本体から分岐を消せるし。
#include <iostream>
template<int mode>
struct mode_traits {
static const char *message;
};
template<int mode> const char* mode_traits<mode>::message="bbb";
template<>
struct mode_traits<100> {
static const char* message;
};
const char* mode_traits<100>::message="aaa";
int main(void) {
const int mode = 100;
std::cout << mode_traits<mode>::message;
}
413デフォルトの名無しさん (ササクッテロラ Spc5-l8Oh)
2026/05/29(金) 11:29:38.72ID:yOJ+I4t+p 03で出来ないといけないとか誰も言ってなくね?
414はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 91f8-wjnD)
2026/05/29(金) 12:33:37.55ID:XM3j5Ybh0 >>413
テクニカル過ぎないことの代表として C++03 を示したものであって C++03 で可能であることは重要ではない。
テクニカル過ぎないことの代表として C++03 を示したものであって C++03 で可能であることは重要ではない。
415デフォルトの名無しさん (ワッチョイ 3336-jQrU)
2026/05/29(金) 15:19:34.73ID:m8Otf3/K0416はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 89a4-wjnD)
2026/05/29(金) 17:35:54.90ID:nA5ubSfh0 >>415
新しい機能をどうしても使いたくないという前提は存在せず、新しい機能を使わずに済むくらいには素朴だという説明をしたつもりなんだけどそんなに分かりにくいかな?
前提がよくわからないので状況によってはありうるという単なる一例だからもちろんマクロで良いならマクロで良いよ。
新しい機能をどうしても使いたくないという前提は存在せず、新しい機能を使わずに済むくらいには素朴だという説明をしたつもりなんだけどそんなに分かりにくいかな?
前提がよくわからないので状況によってはありうるという単なる一例だからもちろんマクロで良いならマクロで良いよ。
417デフォルトの名無しさん (ワッチョイ 894e-l8Oh)
2026/05/29(金) 18:23:31.33ID:W9bgb6p60 >>415
ややこしいテクニック晒してドヤりたいアマチュアの発言だから、偉いとか思わない方がいいよ
本人も言ってるけど、ifdefで困らないならifdefでいいし
C++11以上ならif constexprでいい
ややこしいテクニック晒してドヤりたいアマチュアの発言だから、偉いとか思わない方がいいよ
本人も言ってるけど、ifdefで困らないならifdefでいいし
C++11以上ならif constexprでいい
418はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 91f8-+6pL)
2026/05/29(金) 19:18:55.91ID:XM3j5Ybh0 if constexpr は C++17 からだよ。
419デフォルトの名無しさん (ワッチョイ 894e-l8Oh)
2026/05/29(金) 19:55:54.83ID:W9bgb6p60 そうだったか、すまん
420デフォルトの名無しさん (ワッチョイ 917b-h4v0)
2026/05/30(土) 07:29:38.29ID:1hQwvNqk0 c++でもトレイトなんてあったん?
421はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 897e-wjnD)
2026/05/30(土) 10:56:01.75ID:CANh+bnA0 言語機能としてはトレイトというものはないが構成パターンとしてトレイトがあるって感じかな。
標準ライブラリでは char_traits pointer_traits iterator_traits allocator_traits がそう。
名前に traits とついてはないが numeric_limits もそうかも。
標準ライブラリでは char_traits pointer_traits iterator_traits allocator_traits がそう。
名前に traits とついてはないが numeric_limits もそうかも。
422デフォルトの名無しさん (ワッチョイ 917b-h4v0)
2026/05/30(土) 11:12:15.20ID:1hQwvNqk0 勉強なります mOm
423404 (ワッチョイ 1325-9MTD)
2026/05/30(土) 17:00:26.06ID:PpUk3usf0425はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 91f8-+6pL)
2026/05/30(土) 17:57:39.22ID:+/j9HRHz0 >>423
C++03 くらいの古い C++ でも可能ではあるというネタなのであえてそうしたけど constexpr が使えるならそうしたほうが良い。
if を使わないというよりはロジック本体とは別のところに分離したほうが良いかもしれないというところが主旨で、
トレイトにすればオマケでコンパイル時に解決したいというのも達成できるという提案のつもりだった。
もしメッセージ以外にも mode に依存して変わることがある、 mode が様々な値を取りうるなら mode ごとの振る舞いとして集約したほうが拡張性が高くて見通しも良いだろうし。
念のため再度強調しておくけど前提を勝手に想定しているのでこれがより良い構成とは限らない。
C++ では定義済みのクラスにメンバを追加することは出来ないし基本型はメンバを持てないのでトレイトという形式でなんとかすることもあるというひとつの豆知識だね。
C++03 くらいの古い C++ でも可能ではあるというネタなのであえてそうしたけど constexpr が使えるならそうしたほうが良い。
if を使わないというよりはロジック本体とは別のところに分離したほうが良いかもしれないというところが主旨で、
トレイトにすればオマケでコンパイル時に解決したいというのも達成できるという提案のつもりだった。
もしメッセージ以外にも mode に依存して変わることがある、 mode が様々な値を取りうるなら mode ごとの振る舞いとして集約したほうが拡張性が高くて見通しも良いだろうし。
念のため再度強調しておくけど前提を勝手に想定しているのでこれがより良い構成とは限らない。
C++ では定義済みのクラスにメンバを追加することは出来ないし基本型はメンバを持てないのでトレイトという形式でなんとかすることもあるというひとつの豆知識だね。
426デフォルトの名無しさん (ワッチョイ 7b06-XD0x)
2026/05/30(土) 18:44:17.60ID:QKLBXZIC0 質問者さん最適化中の言語バージョン教えてよ
多分C++03版に興味持ててる人少ない
多分C++03版に興味持ててる人少ない
427デフォルトの名無しさん (ワッチョイ 33a4-jQrU)
2026/05/30(土) 18:48:30.78ID:l2G5x5XC0 質問者さんもconstexprと言ってるので少なくともC++11以上だろうね
428デフォルトの名無しさん (ワッチョイ 7a25-l5Sp)
2026/05/31(日) 07:31:33.45ID:B3gdlDHB0 正直な話
新しい機能は追えてない
新しい機能は追えてない
429デフォルトの名無しさん (ワッチョイ dd4e-VkBD)
2026/05/31(日) 10:36:32.04ID:LSPIhsi/0 >>424
マクロがダメとか言う人多いしそう書いてるサイト多いけど
マクロはコンパイラにパラメータとして渡せるからIDEやシェルスクリプトとかからビルド設定を変えるような用途では欠かせないよ
適材適所で考えた方がいい
自分も追えてない、というか最新のコンパイラでも全然実装が追いついてなくて使えなかったりするし(clangは未だにC++17のpool_resource実装してない)
追えてるから偉い、みたいな発想はよろしくないよ、それが趣味や仕事の人ならともかく
必要な状況で、標準にあれば使うってのが普通
マクロがダメとか言う人多いしそう書いてるサイト多いけど
マクロはコンパイラにパラメータとして渡せるからIDEやシェルスクリプトとかからビルド設定を変えるような用途では欠かせないよ
適材適所で考えた方がいい
自分も追えてない、というか最新のコンパイラでも全然実装が追いついてなくて使えなかったりするし(clangは未だにC++17のpool_resource実装してない)
追えてるから偉い、みたいな発想はよろしくないよ、それが趣味や仕事の人ならともかく
必要な状況で、標準にあれば使うってのが普通
430デフォルトの名無しさん (ワイーワ2 FF62-l0/e)
2026/05/31(日) 11:48:05.73ID:iw1445ThF 条件コンパイルで解決
431デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/05/31(日) 11:57:20.89ID:a3BNQRyE0 テンプレートがダメから仕方なくマクロ使うのであって、マクロがダメと感じたことはほとんどない
あるWindows SDKヘッダーファイルのインクルード位置依存でmin()とmax()がマクロ展開されて困るとかぐらい
あるWindows SDKヘッダーファイルのインクルード位置依存でmin()とmax()がマクロ展開されて困るとかぐらい
432デフォルトの名無しさん (ワッチョイ 5139-CCUW)
2026/05/31(日) 14:26:52.09ID:gebSlwjU0 一般的すぎる名前のマクロと小文字のマクロと機能や構文を追加しようとしてるようなマクロとinlineやconstexprやtypedefで済むマクロを書いたやつは
縛り首にしても許される法律がほしい
縛り首にしても許される法律がほしい
433デフォルトの名無しさん (ワッチョイ 51d9-rB7i)
2026/05/31(日) 14:50:13.38ID:BWBzStOq0 C++の未実装仕様はAIへ投げてRustで実装させよう
434はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/05/31(日) 15:01:10.68ID:dURY9U0x0 マクロ自体には型がついていないがリテラルや式にも型はあるのでそれらに展開されるなら型は有るとも言える。
マクロの問題点は型がどうこうよりもフェイズだ。
構文解析よりも前のフェイズで解釈されるルールだから文法構造をまるっと無視して字句的にマッチすれば置き換えてしまう、マクロの処理時点では変数なんか知らんから変数の内容を見て切り替えることは出来ない。
逆に言えばプログラムのロジック以前の処理系・実行環境関連の都合での切り替えなんかはマクロのほうが妥当なことも多い。
Autotools や CMake との併用を考えるとマクロは要る。
それと宣言や文は変数に放り込んで再利用するなんてことが出来ないので特に繰り返されるパターン (いわゆるボイラープレート) はマクロが便利なこともある。
C++26 には静的リフレクションが入ることになったのでマクロを使う領域は減るとは思うがリフレクションを実用するにはまだまだ時期尚早だろう。
私の個人的な感覚ではコンパイラのデフォルトがその時点でおおよそ信用できる範囲だと思うので今なら GCC は C++20、 Clang は C++17 を想定しておけば問題は少ないと思う。
実務的にはもうちょっと保守的 (古いコンパイラを想定する) でも良いかもしれない。
でもさすがに最低でも C++11 は欲しい。 C++03 はかなりきつい。
マクロの問題点は型がどうこうよりもフェイズだ。
構文解析よりも前のフェイズで解釈されるルールだから文法構造をまるっと無視して字句的にマッチすれば置き換えてしまう、マクロの処理時点では変数なんか知らんから変数の内容を見て切り替えることは出来ない。
逆に言えばプログラムのロジック以前の処理系・実行環境関連の都合での切り替えなんかはマクロのほうが妥当なことも多い。
Autotools や CMake との併用を考えるとマクロは要る。
それと宣言や文は変数に放り込んで再利用するなんてことが出来ないので特に繰り返されるパターン (いわゆるボイラープレート) はマクロが便利なこともある。
C++26 には静的リフレクションが入ることになったのでマクロを使う領域は減るとは思うがリフレクションを実用するにはまだまだ時期尚早だろう。
私の個人的な感覚ではコンパイラのデフォルトがその時点でおおよそ信用できる範囲だと思うので今なら GCC は C++20、 Clang は C++17 を想定しておけば問題は少ないと思う。
実務的にはもうちょっと保守的 (古いコンパイラを想定する) でも良いかもしれない。
でもさすがに最低でも C++11 は欲しい。 C++03 はかなりきつい。
435デフォルトの名無しさん (ワッチョイ c1ba-lRx0)
2026/05/31(日) 17:11:54.21ID:h40WPvm90 Cと共有するなら結局マクロだからな
公開ヘッダに脳死でconstexpr const intとかenum classとかで定数定義してたらはっ倒される
公開ヘッダに脳死でconstexpr const intとかenum classとかで定数定義してたらはっ倒される
436デフォルトの名無しさん (ワッチョイ 8e06-nyf+)
2026/05/31(日) 17:19:16.17ID:TINVPm6t0 コンパイラ引数 -DMODE=100 等の調整方式にした場合は変更時にmake cleanなりリビルドなりしてあげましょうね。
ソース日時が変わらないから基本的に差分コンパイルを期待してはいけない
ソース日時が変わらないから基本的に差分コンパイルを期待してはいけない
437はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/05/31(日) 17:45:28.70ID:dURY9U0x0 変数の constexpr は C23 に入った。
しかも GCC ではすでに C23 (に処理系拡張を追加した gnu23) がデフォルト。
constexpr で定数を定義するのが普通になる未来もあるかもしれない。
C を使っている (または C とヘッダを共有することがある) ようなプロジェクトは保守的に運用しがちだからそう簡単に移行しないと思うけど。
しかも GCC ではすでに C23 (に処理系拡張を追加した gnu23) がデフォルト。
constexpr で定数を定義するのが普通になる未来もあるかもしれない。
C を使っている (または C とヘッダを共有することがある) ようなプロジェクトは保守的に運用しがちだからそう簡単に移行しないと思うけど。
438デフォルトの名無しさん (ワイーワ2 FF62-l0/e)
2026/06/02(火) 13:55:44.54ID:IQgCwviQF #define NULL ((void*)0)
はアウトなのか?
はアウトなのか?
439デフォルトの名無しさん (ワッチョイ e697-1D0z)
2026/06/02(火) 14:25:46.12ID:Wwv6ytXh0 C++ #define NULL ((void*)0)
でgoogle(無料)AIがざっくりと回答してくれる
でgoogle(無料)AIがざっくりと回答してくれる
440はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5d55-Tdc/)
2026/06/02(火) 14:45:37.41ID:ht7f4/6G0 >>438
C++ では C と違って void* から他のポインタへの暗黙の型変換を認めていないのでそう定義してしまうとポインタの定数として使えなくなる。
一般的には NULL は単に 0, 0L, 0LL のいずれかで定義されているとはず。
整数リテラルの 0 は暗黙にポインタに変換できるから。
ちなみにちょっと前まで結果が整数の 0 になる定数式もポインタに暗黙変換できることになってたけど欠陥報告が出て整数リテラルのみに修正された。
C++ では C と違って void* から他のポインタへの暗黙の型変換を認めていないのでそう定義してしまうとポインタの定数として使えなくなる。
一般的には NULL は単に 0, 0L, 0LL のいずれかで定義されているとはず。
整数リテラルの 0 は暗黙にポインタに変換できるから。
ちなみにちょっと前まで結果が整数の 0 になる定数式もポインタに暗黙変換できることになってたけど欠陥報告が出て整数リテラルのみに修正された。
441デフォルトの名無しさん (ワッチョイ 5139-CCUW)
2026/06/02(火) 15:01:00.83ID:2xufgWi50 C++にもCにもnullptrが入ったんだからそっち使え、0からの変換のことは忘れるんだ
442デフォルトの名無しさん (ワッチョイ 410b-etCG)
2026/06/02(火) 16:16:23.57ID:c4B8bb8/0 nullptr でいいよね。
443はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/02(火) 18:26:25.06ID:wuc878y60 意図しないときに 0 がポインタとして解釈されてしまったときに混乱するだろう。
nullptr を使うべきというのとは別に知っておくに越したことはない。
nullptr を使うべきというのとは別に知っておくに越したことはない。
444デフォルトの名無しさん (ワッチョイ 8e06-nyf+)
2026/06/02(火) 20:20:54.28ID:ASE1fEGy0 C++内ではnullptrを使うのが良い
NULLの定義はコンパイラ付属のstddef.hあるいはcstdefに任せるべきで、#ifdef __cplusplusによってC++の場合は0、Cの場合は((void*)0)といった感じに定義分けされているはず
別のインクルードが必要に応じてインクルードしているから大抵自然にNULLが使える、例えばCのstdio.hの中身を眺めれば確認できるはず
NULLを自分で定義するとかえって多重定義になるのでは
if文などのboolean判定時に0もnullptrもfalse扱いになるが、これとは区別して考えよう
NULLの定義はコンパイラ付属のstddef.hあるいはcstdefに任せるべきで、#ifdef __cplusplusによってC++の場合は0、Cの場合は((void*)0)といった感じに定義分けされているはず
別のインクルードが必要に応じてインクルードしているから大抵自然にNULLが使える、例えばCのstdio.hの中身を眺めれば確認できるはず
NULLを自分で定義するとかえって多重定義になるのでは
if文などのboolean判定時に0もnullptrもfalse扱いになるが、これとは区別して考えよう
445デフォルトの名無しさん (ワッチョイ 8e06-nyf+)
2026/06/02(火) 20:32:01.47ID:ASE1fEGy0 >>441の言う通り今はCにもnullptrあるんだね
NULLは古い環境用の知識ということで、、、
NULLは古い環境用の知識ということで、、、
446はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5d55-Tdc/)
2026/06/02(火) 22:32:48.47ID:ht7f4/6G0 C の nullptr はだいぶん後になって付け加えられたから C++ と乖離が少ないようにかなり寄せてるけど細かなところでちょっと違う。
今は諸事情できちんと調べられてないから間違ってたらすまんけど 私の理解だとたとえば printf("%p", nullptr); は C++ では未定義だけど C では OK のはず。
既定の実引数拡張や適合に関する規則が違う。
今は諸事情できちんと調べられてないから間違ってたらすまんけど 私の理解だとたとえば printf("%p", nullptr); は C++ では未定義だけど C では OK のはず。
既定の実引数拡張や適合に関する規則が違う。
447デフォルトの名無しさん (ワッチョイ 414e-etCG)
2026/06/02(火) 23:48:32.80ID:c4B8bb8/0 cout<<nullptr<<endl;
↓
nullptr
え そなの?w
↓
nullptr
え そなの?w
448デフォルトの名無しさん (ワッチョイ c1ba-lRx0)
2026/06/03(水) 05:43:56.49ID:toiX3I4X0 nullptr_tにoperator<<を定義しろとは標準では決まってないから実装依存
449はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/03(水) 07:58:27.51ID:wByI1zTJ0450デフォルトの名無しさん (ワッチョイ 414e-etCG)
2026/06/03(水) 08:07:03.87ID:vcZMEX6A0 >>449
どもです。いちおstd=c++23でコンパイルしました。
どもです。いちおstd=c++23でコンパイルしました。
451デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/03(水) 15:28:41.92ID:Wy1oRWov0 ostream系クラスは開発者向けログ出力機能として生き残っていく感じかなあ
452デフォルトの名無しさん (ワッチョイ f97a-MxJN)
2026/06/03(水) 20:22:56.33ID:oLwg6wz00 は?
453デフォルトの名無しさん (アウアウ Sade-uSy7)
2026/06/03(水) 21:12:40.38ID:+0qtzwvFa 完全GUIプログラムのデバッグ出力用としては未だに printf 系しか使わないオレサマ
454デフォルトの名無しさん (ワッチョイ 417a-io+q)
2026/06/03(水) 23:11:11.86ID:nwNKp1sh0 std::formatすら知らないジジイ
455デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/03(水) 23:16:51.43ID:Wy1oRWov0 operator << ()を関数オーバーライドすれば出力内容もカスタマイズできるし
ヌルポインタを嚙まされても適当にNULLとか出力するあたりはログ機能に合ってる
ヌルポインタを嚙まされても適当にNULLとか出力するあたりはログ機能に合ってる
456デフォルトの名無しさん (ブーイモ MM9a-io+q)
2026/06/03(水) 23:45:15.04ID:n7OIDdE+M457デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/03(水) 23:56:11.41ID:Wy1oRWov0 >書式指定がクソだろ
数値型に対して10進表記と16進表記を同時に出力するみたいなオーバーライドを用意しておくと楽だよ
数値型に対して10進表記と16進表記を同時に出力するみたいなオーバーライドを用意しておくと楽だよ
458デフォルトの名無しさん (ワッチョイ 5116-GQdY)
2026/06/03(水) 23:58:24.42ID:XjwW95ds0 > 数値型に対して10進表記と16進表記を同時に出力するみたいなオーバーライド
きめえ
きめえ
459デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/04(木) 00:08:04.92ID:YvQW6eq+0 Visual Studioとかの評価窓は数値を10進と16進のどちらかしか表示できないから不便
10進で欲しいことも16進で欲しいこともあるから「5963(0x174B)」みたいにどちらも出力するに越したことはない
10進で欲しいことも16進で欲しいこともあるから「5963(0x174B)」みたいにどちらも出力するに越したことはない
460デフォルトの名無しさん (ワッチョイ 7a6a-kGH5)
2026/06/04(木) 02:01:35.96ID:4qHdkMa20461デフォルトの名無しさん (ブーイモ MM9a-io+q)
2026/06/04(木) 03:10:22.33ID:LoOWCbi7M >>457
得意げに言ってるようだけど、完全に時代に置き去りにされてんの自覚したほうがいいぞ
得意げに言ってるようだけど、完全に時代に置き去りにされてんの自覚したほうがいいぞ
462デフォルトの名無しさん (ワッチョイ 9ac3-OPq0)
2026/06/04(木) 05:08:03.79ID:+9IbWOcE0 そんなの発注主に言ってくださいよ。。 (現場作業員のつぶやき
463デフォルトの名無しさん (ワッチョイ 8e06-nyf+)
2026/06/04(木) 06:46:45.97ID:m+R0LwSW0 自分は457じゃないけど
時代語る人は今時自分で組まないみたいなので置き去りとかどうでもいい
時代語る人は今時自分で組まないみたいなので置き去りとかどうでもいい
464デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 08:23:34.90ID:eIr3VgFm0 C++専用スレなのに、ostream系クラスをカスタマイズした経験もろくにない人がベテランを気取るのは良くないよ
465デフォルトの名無しさん (ワッチョイ e54e-etCG)
2026/06/04(木) 08:29:10.62ID:Hja2/bAX0 C++ストリームの問題点は、黒魔術以前の設計なので、仮装関数呼び出しによってパフォーマンスが劣化すること。
HTTPサーバーのようなドンドンログを吐き出すサービスには使えない。
HTTPサーバーのようなドンドンログを吐き出すサービスには使えない。
466デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 08:37:02.95ID:eIr3VgFm0 printf系関数が書式文字列の文法解析を関数呼び出しのたびに行うことに比べれば、仮想関数のオーバーヘッドは小さい
467デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 08:56:29.97ID:eIr3VgFm0 ログ書き込みの遅さに比べればメモリ処理なんて大した時間はかからない
実務経験がぜんぜんなさそうのになんでC++スレで回答者のまねごとしてる人いるの
実務経験がぜんぜんなさそうのになんでC++スレで回答者のまねごとしてる人いるの
468デフォルトの名無しさん (ワッチョイ 41fc-7UYV)
2026/06/04(木) 08:58:56.65ID:ud8ZCwXP0 サーバでprintfやostream使うと
「あのぅ……そこ、一応高並行・低レイレンシを謳うサーバーですよねぇ?
そんな関数の奥深くで、生の printf とか std::ostream で同期 I/O 叩いちゃうとぉ、せっかく Boost.fiber や C++20 コルーチンで組み立てた非同期ランタイムのワーカースレッドが、OS レベルで丸ごとブロッキングされちゃうと思うんですけどぉ……。
C10K(しーてんけー)問題、地頭(じあたま)で解決するおつもりでしたぁ?(ニチャァ)」
ってなりそ
(↑煽り文の修正をGeminiに任せたら、とんでもない高火力になったw)
「あのぅ……そこ、一応高並行・低レイレンシを謳うサーバーですよねぇ?
そんな関数の奥深くで、生の printf とか std::ostream で同期 I/O 叩いちゃうとぉ、せっかく Boost.fiber や C++20 コルーチンで組み立てた非同期ランタイムのワーカースレッドが、OS レベルで丸ごとブロッキングされちゃうと思うんですけどぉ……。
C10K(しーてんけー)問題、地頭(じあたま)で解決するおつもりでしたぁ?(ニチャァ)」
ってなりそ
(↑煽り文の修正をGeminiに任せたら、とんでもない高火力になったw)
469デフォルトの名無しさん (ワッチョイ 0ae5-xuu9)
2026/06/04(木) 09:11:48.57ID:Oi7FLl/B0 ファイルI/O関数って今でも遅いの?
最近のOSは既定でライトバック動作になってると思うけど
最近のOSは既定でライトバック動作になってると思うけど
470デフォルトの名無しさん (ワッチョイ e61a-etCG)
2026/06/04(木) 10:02:59.07ID:N0n2HwfF0 MicrosoftやGNUの実装では、一バイトごとに仮想関数呼び出しを、演算子オーバーロードの数だけ繰り返すのでとてつもなく遅くなる。
471デフォルトの名無しさん (ワッチョイ 41b3-io+q)
2026/06/04(木) 10:15:22.67ID:SVvRJgfG0 ostreamなんか今すぐ捨ててstd::format使えって
古いc++使わないといけないならlibfmt入れろ
なんでこんなのも知らねーの?
まじこのスレのレベルの低さに絶句するわ
古いc++使わないといけないならlibfmt入れろ
なんでこんなのも知らねーの?
まじこのスレのレベルの低さに絶句するわ
472デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 10:34:55.87ID:eIr3VgFm0 std::formatはコストが大きいよ
ostreamをカスタマイズしたほうが拡張性も効率も良い
ostreamをカスタマイズしたほうが拡張性も効率も良い
473デフォルトの名無しさん (ワッチョイ 4185-etCG)
2026/06/04(木) 10:46:29.14ID:RdVUySwX0 コンパイルの時間はなんか長いね。format
474デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 10:54:34.80ID:eIr3VgFm0 より厳密に説明するとC++のログ機能として有用なのはostreamそのものではなくoperator<<()の独自実装やオーバーライドなんだよね
std::formatは書式解析やオブジェクト生成のコストが大きいし、operator<<()の恩恵を活かせていないのがもったいない
std::formatは書式解析やオブジェクト生成のコストが大きいし、operator<<()の恩恵を活かせていないのがもったいない
475はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/04(木) 11:44:55.55ID:BHUE0YPR0 std::format はいったん std::string 型のオブジェクトを生成するのでコストが大きいが std::print は全ての結果を格納した文字列を作ったりしない実装にできる。
std::ostream の ostream<< はその仕組み上、書式設定やロケールを動的に読みに行く必要性から最適化してもそのコストは潰せないが、 std::print は特に明示的にロケールの適用を指示しない限りロケールに左右されないし読みに行く必要もない。
外部に書き出すという前提での実行コストはこうなると予測できる。 (使い方によるだろうし実測してないことは断っておく。 検証したければやってみて。)
@ std::print, std::println, std::printf
B std::ostream (の opretor<< で書式化)
C std::format で文字列を構築してから std::ostream に出力
注1: std::printf は主要なコンパイラではビルトイン関数として特別扱いがあって典型的な使い方では関数呼出しごとに書式を解釈したりしない。
注2: std::string 型のオブジェクト生成も短い文字列では Small-String Optimization によってメモリ割り当てが抑制されるので整数の数値化程度ならたいしたコストにならない。
注3: マルチスレッドが絡むと I/O 自体のコストが大きくなるので書式化のコストは相対的に重要ではなくなるが、書式やロケールを読みに行くコストは増大しそう。
std::ostream の ostream<< はその仕組み上、書式設定やロケールを動的に読みに行く必要性から最適化してもそのコストは潰せないが、 std::print は特に明示的にロケールの適用を指示しない限りロケールに左右されないし読みに行く必要もない。
外部に書き出すという前提での実行コストはこうなると予測できる。 (使い方によるだろうし実測してないことは断っておく。 検証したければやってみて。)
@ std::print, std::println, std::printf
B std::ostream (の opretor<< で書式化)
C std::format で文字列を構築してから std::ostream に出力
注1: std::printf は主要なコンパイラではビルトイン関数として特別扱いがあって典型的な使い方では関数呼出しごとに書式を解釈したりしない。
注2: std::string 型のオブジェクト生成も短い文字列では Small-String Optimization によってメモリ割り当てが抑制されるので整数の数値化程度ならたいしたコストにならない。
注3: マルチスレッドが絡むと I/O 自体のコストが大きくなるので書式化のコストは相対的に重要ではなくなるが、書式やロケールを読みに行くコストは増大しそう。
476デフォルトの名無しさん (ワッチョイ 5116-GQdY)
2026/06/04(木) 11:53:03.95ID:bPkUVNlp0 std::formatは俺が読むのも書くのも楽なんだよな
演算子オーバロード独自ってのは読みたくねえ
演算子オーバロード独自ってのは読みたくねえ
477デフォルトの名無しさん (ワッチョイ 4157-7UYV)
2026/06/04(木) 11:53:39.31ID:8Tj5H6XF0 あ、あの 皆さん
C++23のアレは言及しなくて良いんすか?
……あっ(察し)
C++23のアレは言及しなくて良いんすか?
……あっ(察し)
478デフォルトの名無しさん (ブーイモ MM9a-io+q)
2026/06/04(木) 12:01:29.68ID:TfmokZ3lM479デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 12:07:51.64ID:eIr3VgFm0480デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/04(木) 12:17:11.53ID:eIr3VgFm0 >>478
知ったかぶりしているのは君のほうだろう
実行時に毎回書式解析するprintf()やstd::format()よりも、バイナリコンパイル時にのみ書式解析されるoperator << ()のほうが速いのは明らか
知ったかぶりしているのは君のほうだろう
実行時に毎回書式解析するprintf()やstd::format()よりも、バイナリコンパイル時にのみ書式解析されるoperator << ()のほうが速いのは明らか
481デフォルトの名無しさん (ワッチョイ 412d-io+q)
2026/06/04(木) 13:19:47.20ID:SVvRJgfG0 だめだこりゃ
482はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/04(木) 18:05:48.93ID:BHUE0YPR0 >>480
std::format (や std::print など) は実行時に書式を解析しないという前提をわかってなかったのか……。
コンパイル時計算で文字列を扱えるように緩和されたからこそ入ったのだし、
実行時に解析する必要性があるときのためにわざわざ std::vformat を別に用意しているくらいなんだぞ。
何のために std::vformat があると思ってたんだ?
std::format が性能の足を引っ張っているのは結果を std::string 型のオブジェクトとして構築する部分だ。
std::print では文字列全体を構築する手間がないのと書式やロケールのグローバルな設定を見に行かない分だけ性能的には有利になる。
std::format (や std::print など) は実行時に書式を解析しないという前提をわかってなかったのか……。
コンパイル時計算で文字列を扱えるように緩和されたからこそ入ったのだし、
実行時に解析する必要性があるときのためにわざわざ std::vformat を別に用意しているくらいなんだぞ。
何のために std::vformat があると思ってたんだ?
std::format が性能の足を引っ張っているのは結果を std::string 型のオブジェクトとして構築する部分だ。
std::print では文字列全体を構築する手間がないのと書式やロケールのグローバルな設定を見に行かない分だけ性能的には有利になる。
483デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/04(木) 18:31:57.48ID:kR5XAgvD0 >>482
それは違う
std::format()が有用なのはロケールに合わせた書式文字列を別リソースから渡すケースなので、実行バイナリコンパイル時コンパイルでは対応できない。
言語によって単語の並びが変わりうることに対応することが一番の利点であり、実行バイナリコンパイル時コンパイルではない。
それは違う
std::format()が有用なのはロケールに合わせた書式文字列を別リソースから渡すケースなので、実行バイナリコンパイル時コンパイルでは対応できない。
言語によって単語の並びが変わりうることに対応することが一番の利点であり、実行バイナリコンパイル時コンパイルではない。
484デフォルトの名無しさん (ワッチョイ e54e-etCG)
2026/06/04(木) 22:02:07.98ID:ILvboRoG0 DVDからSSDへのコピーをstream使ってやったら10時間以上かかったが
直接API呼び出したら10分程度で終わった
直接API呼び出したら10分程度で終わった
485デフォルトの名無しさん (ワッチョイ 412d-io+q)
2026/06/05(金) 00:32:13.06ID:YNJp1gL00 >>483
またしったかぶり
書式文字列はコンパイル時定数だ
実行時に指定する仕組みもあるが大半の用途では定数で足りる
コンパイル時にサポートするlocaleとその書式が不明なんて例外的すぎるだろバカ
ostreamでも何も楽にならない
そもそもそんな議論するまでもなく、ほとんどinline展開できないostreamに劣る要素がない
攻撃するならコンパイル時間にしとけ
またしったかぶり
書式文字列はコンパイル時定数だ
実行時に指定する仕組みもあるが大半の用途では定数で足りる
コンパイル時にサポートするlocaleとその書式が不明なんて例外的すぎるだろバカ
ostreamでも何も楽にならない
そもそもそんな議論するまでもなく、ほとんどinline展開できないostreamに劣る要素がない
攻撃するならコンパイル時間にしとけ
486デフォルトの名無しさん (ワッチョイ 5139-CCUW)
2026/06/06(土) 01:01:47.08ID:skSSLQ+W0 1文字ごとに仮想関数が呼ばれようがIOの前ではどうでもいいし、メモリ割り当てでヒープの状態が変わるほうがデバッグに辛くないか
そういえばprintfの中でmalloc使ってるクソ実装も昔あったなあ…
そういえばprintfの中でmalloc使ってるクソ実装も昔あったなあ…
487デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/06(土) 09:56:24.87ID:uqM5c5oX0 ostreamではなくoperator<<()が有益なのだが、わかりやすく説明するためにostreamと言ったせいかスレ住人に正しく理解してもらえてないのが残念
ostringstreamライクな軽量バッファクラスを自力実装するのは楽しいよ
operator<<()は、自分を戻り値にするところが似ているJavaのStringBuilderクラスのappend()関数よりも直観的な記述ができる
ostringstreamライクな軽量バッファクラスを自力実装するのは楽しいよ
operator<<()は、自分を戻り値にするところが似ているJavaのStringBuilderクラスのappend()関数よりも直観的な記述ができる
488デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/06(土) 10:07:49.01ID:uqM5c5oX0 MFCにoperator<<()を使ったデバッグトレースクラスがあったうろ覚えな記憶があったので調べたら見つかった
懐かしい、CDumpContextクラス
https://learn.microsoft.com/ja-jp/cpp/mfc/reference/cdumpcontext-class?view=msvc-170#operator_lt_lt
懐かしい、CDumpContextクラス
https://learn.microsoft.com/ja-jp/cpp/mfc/reference/cdumpcontext-class?view=msvc-170#operator_lt_lt
489デフォルトの名無しさん (ワッチョイ c1ba-lRx0)
2026/06/06(土) 11:03:15.60ID:otMluy8K0 言わんとすることは分からんでもないけど,文字列化の定義をシフト演算子に書くとかいうきっしょい仕組みをいつまで引きずってんだと思う
490デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/06(土) 11:36:59.44ID:uqM5c5oX0 operator<<()は可変長引数のようにいくつでも追記できるのでマクロと組み合わせるのも楽
以下はログ用インスタンスhogeに追記するマクロの例
#define FOOBAR(x) hoge << x << "\n"
FOOBAR(1 << num << "abc=" << lpstr);
以下はログ用インスタンスhogeに追記するマクロの例
#define FOOBAR(x) hoge << x << "\n"
FOOBAR(1 << num << "abc=" << lpstr);
491デフォルトの名無しさん (ワッチョイ 41b6-io+q)
2026/06/06(土) 12:01:59.27ID:prt1RWXN0 そんなクソダサテクニック披露すんの慎んでもらえる?
492デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/06(土) 12:16:02.71ID:uqM5c5oX0 operator<<()を使ったostringstreamライク軽量クラスとしては、Mecabのソースコードに含まれる mecab/src/string_buffer.h とか参考になる
https://taku910.github.io/mecab/#download
https://taku910.github.io/mecab/#download
493デフォルトの名無しさん (ワッチョイ 41b6-io+q)
2026/06/06(土) 12:22:37.25ID:prt1RWXN0 またこういう古臭いこと言ってるってことはrangesもどうせ知らないわけだ
494デフォルトの名無しさん (ワッチョイ 419d-7UYV)
2026/06/06(土) 12:40:54.04ID:tNz1VS0M0 20年前でもboost::format使えってなってたやつでは… いやお好きにどうぞですけど…
495デフォルトの名無しさん (ワッチョイ 711d-DM5e)
2026/06/06(土) 13:04:55.85ID:uqM5c5oX0 std::format()の目的は、渡された引数の並び順を書式で変更する多言語対応であって、
軽量化はおまけだからoperator<<()と比較対象にするのがそもそもおかしい
軽量化はおまけだからoperator<<()と比較対象にするのがそもそもおかしい
496はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/06(土) 13:49:08.43ID:JTFetyCM0497デフォルトの名無しさん (ワッチョイ 5139-CCUW)
2026/06/06(土) 14:01:14.82ID:skSSLQ+W0 operator<<を持ってる型ならフォーマット文字列意識せずになんらかの可読なものが出てくるのが雑に挿入する分には便利って話でしょ
デバッグ出力だから既存のostreamをそのまま使うのではなく出力先を切り替えたりverboseレベルを見たりする派生クラス作るのも当たり前だし
そこは最初からそういう話と思ってたけど、え?
デバッグ出力だから既存のostreamをそのまま使うのではなく出力先を切り替えたりverboseレベルを見たりする派生クラス作るのも当たり前だし
そこは最初からそういう話と思ってたけど、え?
498デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 15:12:10.88ID:SQIW+QID0 軽量なバッファ追記方法という点では、初期C++から用意されているoperator<<()の優位性は今も変わらないよ
標準のostreamがダメダメなだけで、>>492 に書いたMecabのStringBufferクラスみたいに独自実装する価値は今でも十分ある
標準のostreamがダメダメなだけで、>>492 に書いたMecabのStringBufferクラスみたいに独自実装する価値は今でも十分ある
499デフォルトの名無しさん (ワッチョイ 4147-io+q)
2026/06/06(土) 15:37:24.91ID:prt1RWXN0 見苦しいったらありゃしない
500はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/06(土) 15:39:12.47ID:JTFetyCM0 >>498
確認するが、有意性と言ってるのは「軽量」って部分?
何が軽量なの? 実行コスト?
「ostream の operator<< が駄目」というのは今始めて出てきた言説だと思うが、それは話題の初期からそのつもりで言ってた?
ostream の operator<< の実装のことではなく operator<< で繋ぐことに「軽量」という有意性があるというのがどういう意味なのか全然わからない。
確認するが、有意性と言ってるのは「軽量」って部分?
何が軽量なの? 実行コスト?
「ostream の operator<< が駄目」というのは今始めて出てきた言説だと思うが、それは話題の初期からそのつもりで言ってた?
ostream の operator<< の実装のことではなく operator<< で繋ぐことに「軽量」という有意性があるというのがどういう意味なのか全然わからない。
501デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 15:49:07.62ID:SQIW+QID0 >>500
演算子の評価順が重要であり、バッファ追記で同じように用いられることが多いoperator+=()ではoperator<<()と同じ効果は得られない
演算子の評価順が重要であり、バッファ追記で同じように用いられることが多いoperator+=()ではoperator<<()と同じ効果は得られない
502はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c1f8-GQdY)
2026/06/06(土) 16:26:55.80ID:JTFetyCM0503デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 16:29:51.02ID:SQIW+QID0 operator<<()をログ出力に使うことが多いとはいえ、対話デバッグすることもある
operator<<()関数にブレークポイントを設置して待ち伏せするのは簡単だが、
std::format()で追記直前の位置にブレークポイントを設置するのは容易なことではない
保守しやすくメモリを食わずステップ数が少ないoperator<<()が今でもバッファ追記の最適解なんだよ
operator<<()関数にブレークポイントを設置して待ち伏せするのは簡単だが、
std::format()で追記直前の位置にブレークポイントを設置するのは容易なことではない
保守しやすくメモリを食わずステップ数が少ないoperator<<()が今でもバッファ追記の最適解なんだよ
504デフォルトの名無しさん (ワッチョイ 4147-io+q)
2026/06/06(土) 17:15:24.44ID:prt1RWXN0 ジジイが珍説で孤軍奮闘
505デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 17:33:04.63ID:SQIW+QID0 >比較対象は std::print とかで、それに比べて operator<< が良いという主張をしている理由を問うてる。
いちいち書式を指定せず直観的にバッファ追記できる点がoperator<<()の有利な点であり、
プラス演算子を使った ddd = aaa + "bbb" + ccc; のように一時インスタンスが意図せず生成されうるコンパイラ依存もない
また、std::print()は独自の構造体やクラスに対するオーバーライドが困難だが、operator<<()オーバーライドは容易
いちいち書式を指定せず直観的にバッファ追記できる点がoperator<<()の有利な点であり、
プラス演算子を使った ddd = aaa + "bbb" + ccc; のように一時インスタンスが意図せず生成されうるコンパイラ依存もない
また、std::print()は独自の構造体やクラスに対するオーバーライドが困難だが、operator<<()オーバーライドは容易
506デフォルトの名無しさん (ワッチョイ 41f8-7UYV)
2026/06/06(土) 17:39:19.32ID:siI2DnqG0 formatterの特殊化やcroutine,thredに対する視線が……無い……だと……??
507デフォルトの名無しさん (ワッチョイ 8e06-nyf+)
2026/06/06(土) 17:43:18.47ID:nHiCTMv/0 何気ないつぶやきに想像以上の反応があって上手に応対できてない感じが客観的に見て取れるけど。
通行人の私は451さんが以下を言っているように聞こえる
<<演算子による出力処理記述は、メソッドチェーンで書ける事、多重定義関数の中から引数の型によってコール関数が選択される事、これらから記述がイージー(軽量)に書ける。
実装構造もシンプルだから自分で作成したクラスに<<演算子を追加するのも楽、例えばMecabのクラスのように。
通行人の私は451さんが以下を言っているように聞こえる
<<演算子による出力処理記述は、メソッドチェーンで書ける事、多重定義関数の中から引数の型によってコール関数が選択される事、これらから記述がイージー(軽量)に書ける。
実装構造もシンプルだから自分で作成したクラスに<<演算子を追加するのも楽、例えばMecabのクラスのように。
508デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 18:43:34.95ID:SQIW+QID0 std::print()は独自の構造体やクラスに対するオーバーライドのstd::to_string()はいちいちstring型の一時インスタンスを生成するし、特定クラス向けオーバーライドが困難
組み込みやゲームなどでシビアなタイミング依存のログ出力に耐えられるのはoperator<<()であり、string型の一時インスタンスを大量生成するstd::format()系は論外。
組み込みやゲームなどでシビアなタイミング依存のログ出力に耐えられるのはoperator<<()であり、string型の一時インスタンスを大量生成するstd::format()系は論外。
509デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 18:54:38.69ID:SQIW+QID0 std::format()はユーザーに見せる目的の公式な多言語対応文字列の処理には確実に向いているが、開発者が内々に使う高速軽量ログ機能には向かない
510デフォルトの名無しさん (ワッチョイ 41a2-7UYV)
2026/06/06(土) 19:00:15.27ID:oReJ5+0C0511デフォルトの名無しさん (ワッチョイ 4147-io+q)
2026/06/06(土) 19:10:48.34ID:prt1RWXN0 こういうホラ吹きジジイにはなりたくないよな
512デフォルトの名無しさん (ワッチョイ 9d1d-DM5e)
2026/06/06(土) 19:15:24.60ID:SQIW+QID0 operator<<()の優位性について異論があるなら具体的に書いて
513デフォルトの名無しさん (ワッチョイ 0916-bY8R)
2026/06/07(日) 03:14:45.85ID:VZuddOVE0 > operator<<()関数にブレークポイントを設置して待ち伏せ
やらねえよwwww
やらねえよwwww
514デフォルトの名無しさん (ワッチョイ 6947-MRKe)
2026/06/07(日) 07:29:59.42ID:rsN0Xg430 まとめとくわ
ostreamの関数チェーンによる書式指定は使いにくい上に遅いという語り尽くされた意見に対して、
このostreamジジイは関数チェーンのBuilderパターンが最先端技術で最強と解決策になっていないことをほざいている
さらにブレイクポイントも張れるとか目的が不明なことを力説
間違いを訂正しないで妄想垂れ流す無敵老人は相手にしない方がいいね
ostreamの関数チェーンによる書式指定は使いにくい上に遅いという語り尽くされた意見に対して、
このostreamジジイは関数チェーンのBuilderパターンが最先端技術で最強と解決策になっていないことをほざいている
さらにブレイクポイントも張れるとか目的が不明なことを力説
間違いを訂正しないで妄想垂れ流す無敵老人は相手にしない方がいいね
515デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 08:37:51.88ID:pL1tozTS0 高速なバッファ追記はoperator<<()が今なお強力というのが主旨であり、ostream系派生クラスに限定した話はしていない
>>513,514
自作クラスのデバッグ経験が少ないからブレークポイントの話がピンとこないのかな
オーバーライドしたoperator<<()が増えてくるとどれが呼ばれたか確認する作業が必要になる
std::format()でも意図したstd::to_string()が呼ばれたことを確認するためにブレークポイントを置くのが普通だろう
std::to_string()がどこに書かれているかすぐ把握できるならブレークポイントの設置は難しくないが、実際はそうではない
>>513,514
自作クラスのデバッグ経験が少ないからブレークポイントの話がピンとこないのかな
オーバーライドしたoperator<<()が増えてくるとどれが呼ばれたか確認する作業が必要になる
std::format()でも意図したstd::to_string()が呼ばれたことを確認するためにブレークポイントを置くのが普通だろう
std::to_string()がどこに書かれているかすぐ把握できるならブレークポイントの設置は難しくないが、実際はそうではない
516デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 09:03:46.59ID:pL1tozTS0 ランタイム時に書式解析しないのがstd::format()を推す点なのだろうけど、これは実装依存であり、
Visual Studio 2026のC++の場合はdouble型やfloat型のstd::to_string()の中でsprintf系関数が"%f"で書式解析している
Visual Studio 2026のC++の場合はdouble型やfloat型のstd::to_string()の中でsprintf系関数が"%f"で書式解析している
517デフォルトの名無しさん (ワッチョイ 69ba-KlIC)
2026/06/07(日) 09:40:14.71ID:7nSMiSbz0 ダメだこりゃ
518デフォルトの名無しさん (ワッチョイ 6947-MRKe)
2026/06/07(日) 09:58:50.29ID:rsN0Xg430 このジジイずっとstd::to_stringって言ってんだよね
std::format, std::printのカスタマイズのやり方がわかってない
調べたらすぐわかるのに調べる能力もない
std::format, std::printのカスタマイズのやり方がわかってない
調べたらすぐわかるのに調べる能力もない
519デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 10:21:56.31ID:pL1tozTS0 std::format, std::printをいくらカスタマイズしてもstring型の一時インスタンスを生成する仕組みから離れられないので、軽量なバッファ追記には不向きなままだが
520デフォルトの名無しさん (ワッチョイ 6947-MRKe)
2026/06/07(日) 10:28:47.27ID:rsN0Xg430521はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69f8-bY8R)
2026/06/07(日) 10:29:21.56ID:ZAl4Czjk0 >>519
std::print は文字列全体の生成を普通はしないという説明はしたのだが理解できなかったか?
std::print は文字列全体の生成を普通はしないという説明はしたのだが理解できなかったか?
522はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69f8-bY8R)
2026/06/07(日) 10:48:47.01ID:ZAl4Czjk0 >>515
前提が全く噛み合ってない。
おそらく現場で C++ の使い方は学んだベテランだが言語仕様や設計論はあまり知らないタイプ。
昔からデバッグを何もかもブレークポイントでやってきた現場のテイストを感じる。
しきりに「経験」を繰り返しているのは自分の論が経験則でしかなく合理的に説明できないからだろ。
私はプロではないがログ API にストリームを被せるくらいのことはしたことはある。
私は Visual Studio のことは知らんから具体的な操作は分からんが、オーバーロード解決がどうなったなんてコンパイルするすらしなくてもインテリセンスの機能で表示できるはずだ。
(少なくとも VSCode では適切なアドオンを入れていれば出来るし、 Visual Studio がそれより劣るということはあるまい。)
ツールチェインが信頼できなくて最悪の場合に実際にどうなっているかを確認するにはブレークポイントが役立つこともあるが……最適化と組み合わさると意図したところにブレークポイントを置けないなどのトラブルは起こりがちでソースレベルデバッグではむしろブレークポイントのほうが信用できない。
テンプレート (std::print) の展開結果を確認するよりはオーバーロードの選択結果を確認するほうが楽というのはわからんでもないが、そんな確認が必要になることが頻繁にあるのなら開発体制のどこかが間違えていると思う。
念のために注記しておくが、現時点で std::print 系のライブラリの実装が充分にこなれていない環境もあるのは事実だ。
何せ新しいのでやむをえない現実があることは否定しない。
あくまでも >>451 が開発者用ログ機能としては << で繋げていくやり方がこれからも生き残るというニュアンスなことに対して原理的には理想的ではないと反論している。
現時点での実装の細部の不備はもとより論点ではない。
前提が全く噛み合ってない。
おそらく現場で C++ の使い方は学んだベテランだが言語仕様や設計論はあまり知らないタイプ。
昔からデバッグを何もかもブレークポイントでやってきた現場のテイストを感じる。
しきりに「経験」を繰り返しているのは自分の論が経験則でしかなく合理的に説明できないからだろ。
私はプロではないがログ API にストリームを被せるくらいのことはしたことはある。
私は Visual Studio のことは知らんから具体的な操作は分からんが、オーバーロード解決がどうなったなんてコンパイルするすらしなくてもインテリセンスの機能で表示できるはずだ。
(少なくとも VSCode では適切なアドオンを入れていれば出来るし、 Visual Studio がそれより劣るということはあるまい。)
ツールチェインが信頼できなくて最悪の場合に実際にどうなっているかを確認するにはブレークポイントが役立つこともあるが……最適化と組み合わさると意図したところにブレークポイントを置けないなどのトラブルは起こりがちでソースレベルデバッグではむしろブレークポイントのほうが信用できない。
テンプレート (std::print) の展開結果を確認するよりはオーバーロードの選択結果を確認するほうが楽というのはわからんでもないが、そんな確認が必要になることが頻繁にあるのなら開発体制のどこかが間違えていると思う。
念のために注記しておくが、現時点で std::print 系のライブラリの実装が充分にこなれていない環境もあるのは事実だ。
何せ新しいのでやむをえない現実があることは否定しない。
あくまでも >>451 が開発者用ログ機能としては << で繋げていくやり方がこれからも生き残るというニュアンスなことに対して原理的には理想的ではないと反論している。
現時点での実装の細部の不備はもとより論点ではない。
523デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 10:55:17.46ID:pL1tozTS0 >>522
なぜoperator << ()が理想的でないかについて説明が一切ないので反論になってない
なぜoperator << ()が理想的でないかについて説明が一切ないので反論になってない
524デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 11:17:22.83ID:pL1tozTS0 私は一貫してoperator << ()の優位性を合理的に説明しており経験則の話はしていない
std::print()やstd::format()の性能はコンパイラ依存であり、軽量ログとして使うには高コスト
std::print()やstd::format()の性能はコンパイラ依存であり、軽量ログとして使うには高コスト
525はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69f8-bY8R)
2026/06/07(日) 11:26:35.56ID:ZAl4Czjk0526デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 11:32:04.84ID:pL1tozTS0 >コンパイラ依存というなら operator<< だって実装次第でどうとでもなるだろ。
operator<<()はどのC++コンパイラでも似た動きをするので最適化しやすい
演算子の挙動に関わる話なのでコンパイラごとに違っていたらむしろ良くないくらい
operator<<()はどのC++コンパイラでも似た動きをするので最適化しやすい
演算子の挙動に関わる話なのでコンパイラごとに違っていたらむしろ良くないくらい
527デフォルトの名無しさん (ブーイモ MM33-MRKe)
2026/06/07(日) 11:32:31.39ID:qrhU+w9lM 計測する習慣が身につかなかった底辺エンジニアの成れの果て
528デフォルトの名無しさん (ワッチョイ 69ba-KlIC)
2026/06/07(日) 11:47:38.26ID:7nSMiSbz0 こういう人たちが日本をIT後進国にしているんだなあ
529デフォルトの名無しさん (ワッチョイ 1325-9joH)
2026/06/07(日) 11:55:51.24ID:si7nOuFX0 なんだ?
仕事クビになって
5chで無双かましに来たんか?
仕事クビになって
5chで無双かましに来たんか?
530デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 12:10:16.66ID:pL1tozTS0 シュレーディンガーのねこ的な計測のジレンマに耐えらえるログバッファリング
531デフォルトの名無しさん (ワッチョイ 6937-MRKe)
2026/06/07(日) 13:28:44.30ID:rsN0Xg430 昼休みの間にAIにfmtのbenchmarkにstd::formatを追加させて計測
断トツで遅いostringstream
https://imgur.com/a/22D4e5d
ちな手元にあったVS2022で実行
ホラ吹きジジイ、まだ文句あるなら自分で動かしてからにしろよ
断トツで遅いostringstream
https://imgur.com/a/22D4e5d
ちな手元にあったVS2022で実行
ホラ吹きジジイ、まだ文句あるなら自分で動かしてからにしろよ
532デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 13:33:52.72ID:pL1tozTS0533デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 13:43:38.52ID:pL1tozTS0 自身の理解力の弱さを自覚しているからこそAIに頼る気持ちが強いのだろうけど、AIに投げる質問自体が的外れなら効果は得られない
534デフォルトの名無しさん (ワッチョイ 6937-MRKe)
2026/06/07(日) 14:42:55.30ID:rsN0Xg430 >>532
だったらoperator<<は最適化が効くとか軽量とか根拠なくほざくなバカ
だったらoperator<<は最適化が効くとか軽量とか根拠なくほざくなバカ
535デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 14:59:03.85ID:pL1tozTS0 一時インスタンス生成が必要ないのだから、軽量なのは当たり前
だからこそ今なおMecabだけでなく7zipやopenvinoなど様々なプロジェクトでバッファリングにoperator<<()が採用されている
だからこそ今なおMecabだけでなく7zipやopenvinoなど様々なプロジェクトでバッファリングにoperator<<()が採用されている
536はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c156-b1ev)
2026/06/07(日) 15:59:19.98ID:GpazRL2Z0 >>535
std::print は文字列全体をひとつのオブジェクトとして生成したりしないと何度説明すりゃわかるんだ。
それとストリームの operator<< は書式化の機能で、書式化の機能を持たない (または機能を削った) 独自実装がたまたま表面的なインターフェイスとして opetator<< を使ってるからといって同列に持ち出すのも比較として筋が通らんだろ。
機能を削って良いならそりゃいくらでも軽量に出来るよ。
std::print は文字列全体をひとつのオブジェクトとして生成したりしないと何度説明すりゃわかるんだ。
それとストリームの operator<< は書式化の機能で、書式化の機能を持たない (または機能を削った) 独自実装がたまたま表面的なインターフェイスとして opetator<< を使ってるからといって同列に持ち出すのも比較として筋が通らんだろ。
機能を削って良いならそりゃいくらでも軽量に出来るよ。
537デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 16:22:31.66ID:pL1tozTS0 >機能を削って良いならそりゃいくらでも軽量に出来るよ。
バッファリングクラスを自作すれば機能を削るどころか何もないところに少しづつ機能を足していくかたちになる。
ostream系とは別にopetator<<()を使った軽量高速な標準バッファリングテンプレートクラスがあっても良さそうなもんだけど。
C++のopetator<<()はJavaのStringBuilderクラスなどにはない可読性の優位があるのにあまり使われないのは勿体ない。
バッファリングクラスを自作すれば機能を削るどころか何もないところに少しづつ機能を足していくかたちになる。
ostream系とは別にopetator<<()を使った軽量高速な標準バッファリングテンプレートクラスがあっても良さそうなもんだけど。
C++のopetator<<()はJavaのStringBuilderクラスなどにはない可読性の優位があるのにあまり使われないのは勿体ない。
538デフォルトの名無しさん (ワッチョイ 0939-bu3S)
2026/06/07(日) 16:48:28.14ID:xwHVR++i0 俺は最初からログの話と思ってostreamは専用に弄ったものを使う前提で読んでるんだが
標準クラスをそのまま使う前提で叩いてる人も多いので俺の読み方が間違ってるのかと心配になる
<<はフォーマット文字列を意識せず雑に書いてもなんか出てくるからデバッグに向いてる部分は理解するが
それ以外の部分は、持ち上げてる方も叩いてる方も言い過ぎだろう
書くのが楽な場合もある程度の元々そんな大それた話じゃない
パフォーマンスだってデバッグ用かつIOを伴うとなれば実にどうでもいい
標準クラスをそのまま使う前提で叩いてる人も多いので俺の読み方が間違ってるのかと心配になる
<<はフォーマット文字列を意識せず雑に書いてもなんか出てくるからデバッグに向いてる部分は理解するが
それ以外の部分は、持ち上げてる方も叩いてる方も言い過ぎだろう
書くのが楽な場合もある程度の元々そんな大それた話じゃない
パフォーマンスだってデバッグ用かつIOを伴うとなれば実にどうでもいい
539デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 16:57:34.97ID:pL1tozTS0 C++17以降はstringインスタンスを一時生成しないstd::to_chars()が使えるのでバッファリングクラスを自作しやすくなってる
540デフォルトの名無しさん (ワッチョイ 69ee-DPV+)
2026/06/07(日) 17:13:30.48ID:lpZAXCrm0 ふとそういやWTLってあったなーと思い出して
今調べたら 最新が ver10.01 2026-03-01でビックリした
今調べたら 最新が ver10.01 2026-03-01でビックリした
541デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 20:24:28.11ID:pL1tozTS0 >>538 の言う通りで、執拗に否定しようとする人がいて困ってた
C++スレなのに読解力の弱い人が的外れな意見を書き込むから面倒なことになる
C++スレなのに読解力の弱い人が的外れな意見を書き込むから面倒なことになる
542はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c156-b1ev)
2026/06/07(日) 20:37:37.58ID:GpazRL2Z0 主張が読み取れないという話をしてて、否定以前の部分なんだけど。
最初は ostream 系と言ってて、 operator<< が大事なんだという話に変わって、今はバッファリンククラス (???書式化は重要ではないという意味だろうか?) と言ってる。
何が何よりどのように良いと言いたいのかはっきりとまとめて欲しい。
最初は ostream 系と言ってて、 operator<< が大事なんだという話に変わって、今はバッファリンククラス (???書式化は重要ではないという意味だろうか?) と言ってる。
何が何よりどのように良いと言いたいのかはっきりとまとめて欲しい。
543デフォルトの名無しさん (ワッチョイ 69ba-KlIC)
2026/06/07(日) 20:44:00.68ID:7nSMiSbz0 いつもの超天才くんみたいだからもう相手しない方がいいよ
次は世界最高のC++マスターのぼくちんを理解できない愚民が悪いって言い出すでしょいつも通り
次は世界最高のC++マスターのぼくちんを理解できない愚民が悪いって言い出すでしょいつも通り
544デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 21:11:30.52ID:pL1tozTS0 coutを含むostreamはバッファリングクラスの一種であり内部バッファのrdbuf()がflushされるまでため込む仕様になっている。
std::format()は毎回書式指定が必要かつ一時インスタンスを多く生成するので直観的な記述や高速なログ出力には向かない。
operator<<()を使ったバッファ追加は直観的な記述が可能かつ一時インスタンスを必要としない優位性がある。
std::format()は毎回書式指定が必要かつ一時インスタンスを多く生成するので直観的な記述や高速なログ出力には向かない。
operator<<()を使ったバッファ追加は直観的な記述が可能かつ一時インスタンスを必要としない優位性がある。
545デフォルトの名無しさん (ワッチョイ 0939-bu3S)
2026/06/07(日) 21:17:42.46ID:xwHVR++i0546デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 21:26:15.23ID:pL1tozTS0 >>545
最初からoperator<<()の話をしている
cout << "hello" << num << endl;のような<<で追記処理をつなげる記法が直観的でないというなら価値観の違いなのでどうしようもない
最初からoperator<<()の話をしている
cout << "hello" << num << endl;のような<<で追記処理をつなげる記法が直観的でないというなら価値観の違いなのでどうしようもない
547デフォルトの名無しさん (ワッチョイ 0939-bu3S)
2026/06/07(日) 21:34:56.48ID:xwHVR++i0 >>546
それは俺には伝わってるが他の人には伝わってない
この状態でバッファとか効率とか枝葉の話をしても論点を増やした分だけツッコミやすくなるだけなので逆効果でしかなく、落ち着けと言ってる
(俺も突っ込みたい箇所も沢山あるが熱くなった頭で自分でもわけわからず書いてるだろうようなことに突っ込んでもしょうがないからやらない)
引っ込みがつかなくなってるのは叩いてる方だって同じだろうから、とにかく落ち着け以外に言えることはない
それは俺には伝わってるが他の人には伝わってない
この状態でバッファとか効率とか枝葉の話をしても論点を増やした分だけツッコミやすくなるだけなので逆効果でしかなく、落ち着けと言ってる
(俺も突っ込みたい箇所も沢山あるが熱くなった頭で自分でもわけわからず書いてるだろうようなことに突っ込んでもしょうがないからやらない)
引っ込みがつかなくなってるのは叩いてる方だって同じだろうから、とにかく落ち着け以外に言えることはない
548デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 21:43:57.82ID:pL1tozTS0 >>490 でも書いたように、operator<<()を使うコーディングは、coutなどのインスタンスを直接記述せずにマクロで包んで処理全体をコメントアウトできるようにして使うのが楽
#define FOOBAR(x) std::cout << __FILE__ << ':' << __LINE__ << " " << x << std::endl
FOOBAR(1 << num << "abc=" << lpstr);
#define FOOBAR(x) std::cout << __FILE__ << ':' << __LINE__ << " " << x << std::endl
FOOBAR(1 << num << "abc=" << lpstr);
549はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c156-b1ev)
2026/06/07(日) 22:09:40.86ID:GpazRL2Z0550デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/07(日) 22:34:59.32ID:pL1tozTS0 std::format()やstd::print()の存在価値は多言語対応なので、ここで比較対象にするのは違和感がある
551デフォルトの名無しさん (ワッチョイ 0916-bY8R)
2026/06/07(日) 23:22:34.16ID:VZuddOVE0552デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/08(月) 00:05:23.62ID:dZrqwX8E0 >>551
そのとおり。ostream系クラスと表現をしたのは、operator<<()を使った実装例をまず想像してもらいたかったから。
ostream系クラスが処理速度が確かに遅いが、一時インスタンスを作らず内部バッファのrdbuf()に追記できるようになっている。
C++17で追加されたstd::to_chars()を使えば、operator<<()を使うバッファリングクラスを割と簡単に自作できる。
バッファのポインタとサイズの管理を独自実装する面倒はあるものの、
ログ処理中にメモリアロケーターを使いたくない環境での利用に向いている。
そのとおり。ostream系クラスと表現をしたのは、operator<<()を使った実装例をまず想像してもらいたかったから。
ostream系クラスが処理速度が確かに遅いが、一時インスタンスを作らず内部バッファのrdbuf()に追記できるようになっている。
C++17で追加されたstd::to_chars()を使えば、operator<<()を使うバッファリングクラスを割と簡単に自作できる。
バッファのポインタとサイズの管理を独自実装する面倒はあるものの、
ログ処理中にメモリアロケーターを使いたくない環境での利用に向いている。
553はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c156-b1ev)
2026/06/08(月) 03:01:37.15ID:HA7FUjcH0 >>550
じゃあここからは std::print も std::print 的なデザインと解釈してくれ。
関数 (関数テンプレート内部で特殊化された各実装を呼び出す) に比べて演算子オーバーロードでやりたい理由は何?
じゃあここからは std::print も std::print 的なデザインと解釈してくれ。
関数 (関数テンプレート内部で特殊化された各実装を呼び出す) に比べて演算子オーバーロードでやりたい理由は何?
554はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c156-b1ev)
2026/06/08(月) 03:14:50.33ID:HA7FUjcH0 外側だけの話なので実装は特殊化じゃなくてオーバーロードでもいいな。
性能に関して演算子でやるというのは特に寄与しないし、そこは単にメンタルモデル的に楽に感じるというだけ?
性能に関して演算子でやるというのは特に寄与しないし、そこは単にメンタルモデル的に楽に感じるというだけ?
555デフォルトの名無しさん (ワッチョイ c14e-pZ0l)
2026/06/08(月) 04:39:02.09ID:90wYGeEQ0 >>522
プロを叩けるとなって狂喜乱舞するはちみつ
プロを叩けるとなって狂喜乱舞するはちみつ
556デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 07:44:52.85ID:tzXC1u0n0 多言語対応されたstd::format()の書式指定は従来のprintf()系と同様に入力ミスしやすく、
JavaやP言語のprint()のような引数の順に出力するシンプルな出力機能を提供できていない
JavaやP言語のprint()のような引数の順に出力するシンプルな出力機能を提供できていない
557デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 07:59:29.63ID:tzXC1u0n0 以下のようなoperator+()でつなぐ文字列連結は、operator<<()に比べて処理効率が悪い。
print("Hello" + i + "world")
各言語で一時インスタンスの生成を抑制する最適化が進んでいるとはいえ、文法の性質上、一時インスタンスを生成する可能性は今もある。
print("Hello" + i + "world")
各言語で一時インスタンスの生成を抑制する最適化が進んでいるとはいえ、文法の性質上、一時インスタンスを生成する可能性は今もある。
558デフォルトの名無しさん (ワッチョイ 6937-MRKe)
2026/06/08(月) 08:35:08.51ID:HGAZg7wj0 >>546
この違いを価値観で済ましてお茶を濁そうとしてるジジイ
こいつはstd::formatのこと何も理解してなかったがどうせostreamのこともたいしてわかってないだろ
std::println("{:>8}: {:#010x}", "val", 0xabc);
std::cout << std::setw(8) << std::right << "val" << ": " << std::showbase << std::internal << std::setfill('0') << std::setw(10) << std::hex << 0xabc << std::endl;
この違いを価値観で済ましてお茶を濁そうとしてるジジイ
こいつはstd::formatのこと何も理解してなかったがどうせostreamのこともたいしてわかってないだろ
std::println("{:>8}: {:#010x}", "val", 0xabc);
std::cout << std::setw(8) << std::right << "val" << ": " << std::showbase << std::internal << std::setfill('0') << std::setw(10) << std::hex << 0xabc << std::endl;
559デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 08:47:16.56ID:tzXC1u0n0 書式指定が面倒だという話をしている
「自分は書式指定に詳しい」とマウントを取るために煽るような文章を書きこむのは迷惑なので避けるべき
「自分は書式指定に詳しい」とマウントを取るために煽るような文章を書きこむのは迷惑なので避けるべき
560デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 08:49:16.26ID:tzXC1u0n0 技術的な話題をするスレで侮辱的な表現を使うべきではないし、話題を意図的にゆがめるようなこともすべきではない
561デフォルトの名無しさん (ワッチョイ 6937-MRKe)
2026/06/08(月) 09:03:12.81ID:HGAZg7wj0 >>559
このレベルが詳しいと感じるのがお前の能力の低さをあらわしている
やってることは文字数指定、右詰め、16進数指定でしかない
こんなのログ出力で頻出だろ
お前みたいにデタラメ言いっぱなしで訂正しないカスはとことん叩く
このレベルが詳しいと感じるのがお前の能力の低さをあらわしている
やってることは文字数指定、右詰め、16進数指定でしかない
こんなのログ出力で頻出だろ
お前みたいにデタラメ言いっぱなしで訂正しないカスはとことん叩く
562デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 09:08:05.82ID:tzXC1u0n0563デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 10:07:15.44ID:tzXC1u0n0 std::format()はstring型インスタンスの一時的な生成を避けられない
std::format()を多言語対応しない場合は構文解析の所要時間を削減できるが、多言語対応する場合は実行時に構文解析が行われる
std::format()を多言語対応しない場合は構文解析の所要時間を削減できるが、多言語対応する場合は実行時に構文解析が行われる
564デフォルトの名無しさん (ワッチョイ 69d8-DPV+)
2026/06/08(月) 10:21:57.96ID:a3lZfHt00 >>563
もっとお話を聞きたいので、固定ハンドルを付けて頂けませんか?
もっとお話を聞きたいので、固定ハンドルを付けて頂けませんか?
565デフォルトの名無しさん (ワッチョイ 6937-MRKe)
2026/06/08(月) 10:34:10.16ID:HGAZg7wj0 >>563
ほんとお前は理解力が欠如したジジイだな
ストリームに出すならstd::print使うと何度も書かれているのにまだわかってない
なんならostreamにもprint関数が追加されている
でそれらの書式インフラはformatライブラリが提供している
だから総称としてstd::formatと言ってるだけだアホ
元のfmtではストリーム出力も内包していたが標準化では分離されただけ
ほんとお前は理解力が欠如したジジイだな
ストリームに出すならstd::print使うと何度も書かれているのにまだわかってない
なんならostreamにもprint関数が追加されている
でそれらの書式インフラはformatライブラリが提供している
だから総称としてstd::formatと言ってるだけだアホ
元のfmtではストリーム出力も内包していたが標準化では分離されただけ
566デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 11:10:18.91ID:tzXC1u0n0 ID:HGAZg7wj0 のような言葉使いの汚い人こそがコテハンつけるべきで、
穏当な回答者にコテハンつけさせるのは間違っている
穏当な回答者にコテハンつけさせるのは間違っている
567はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69f8-bY8R)
2026/06/08(月) 11:14:34.44ID:ydKnmupm0568デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 11:16:25.32ID:tzXC1u0n0 >>565 は、実質的な ID:HGAZg7wj0 の敗北宣言なのだけど、ID:HGAZg7wj0本人は必死に負けてないふりを装っている
見苦しい
見苦しい
569デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/08(月) 11:27:52.23ID:tzXC1u0n0570デフォルトの名無しさん (ワッチョイ 6987-we5B)
2026/06/08(月) 12:03:19.24ID:Pq9aLbkv0 出力メッセージやログみたいな短文に関してはむしろへたにi18nしてほしくない場合も多々あるなあ
何十ページにもなる文書類なら翻訳ほしいけど
何十ページにもなる文書類なら翻訳ほしいけど
571デフォルトの名無しさん (ワッチョイ 6907-MRKe)
2026/06/08(月) 13:21:01.86ID:HGAZg7wj0572デフォルトの名無しさん (ワッチョイ 6907-MRKe)
2026/06/08(月) 13:31:44.40ID:HGAZg7wj0573デフォルトの名無しさん (ワッチョイ 1325-9joH)
2026/06/08(月) 14:20:33.81ID:N5s0ya120 >>572
お前が一番いらない
お前が一番いらない
574デフォルトの名無しさん (ワッチョイ 81e2-Kt3y)
2026/06/08(月) 14:32:42.44ID:uvlha9CD0 立ち去れ
575デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/08(月) 19:18:49.01ID:XGF9wV0c0 このスレの一部住人は、C++の新しい言語仕様を利用することにばかり気をとられており、現場のC++プログラマーが失笑するようなバッド・ノウハウを提案する傾向が強い
576デフォルトの名無しさん (ワッチョイ 136a-+o0R)
2026/06/08(月) 21:11:05.86ID:GZzxtrYt0 失笑されているのが自分だって気づかない裸の王様がおるね
577デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/09(火) 11:11:46.01ID:fXodCgRu0 Abseil C++ LibraryというGoogleの社内ライブラリでは直近の2026年6月5日にoperator<<()に関する更新が行われている。
https://github.com/abseil/abseil-cpp/blob/master/absl/log/internal/container.h
operator<<()はC++の初期から存在する記法だが、今も有用なのでメンテナンスされ続けているんだよ。
https://github.com/abseil/abseil-cpp/blob/master/absl/log/internal/container.h
operator<<()はC++の初期から存在する記法だが、今も有用なのでメンテナンスされ続けているんだよ。
578デフォルトの名無しさん (ワッチョイ 6968-MRKe)
2026/06/09(火) 17:57:58.89ID:zkdJLXBG0 >>577
自分の言葉で説明できないジジイが今度はGoogleの権威を借りようとするとか
GoogleはC++規約的にprintfでなくstreamスタイルを使うというルールになっているが、決してstreamスタイルを激推ししているわけではない
https://google.github.io/styleguide/cppguide.html#Streams
ストリームコードではコードとデータが混在していることや、演算子のオーバーロード(期待したものと異なるオーバーロードが選択される可能性がある)が使用されていることから、ストリームの出力を正確に制御することは困難です
自分の言葉で説明できないジジイが今度はGoogleの権威を借りようとするとか
GoogleはC++規約的にprintfでなくstreamスタイルを使うというルールになっているが、決してstreamスタイルを激推ししているわけではない
https://google.github.io/styleguide/cppguide.html#Streams
ストリームコードではコードとデータが混在していることや、演算子のオーバーロード(期待したものと異なるオーバーロードが選択される可能性がある)が使用されていることから、ストリームの出力を正確に制御することは困難です
579デフォルトの名無しさん (ワッチョイ 6968-MRKe)
2026/06/09(火) 17:59:05.01ID:zkdJLXBG0 >>577
でabseilでは結局次のような出力方法がサポートされている
なんもわかってないジジイ草
LOG(INFO) << absl::StreamFormat("User: %s, ID: 0x%08x", "Alice", 0x123456);
でabseilでは結局次のような出力方法がサポートされている
なんもわかってないジジイ草
LOG(INFO) << absl::StreamFormat("User: %s, ID: 0x%08x", "Alice", 0x123456);
580デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/09(火) 18:53:42.36ID:fXodCgRu0581デフォルトの名無しさん (ワッチョイ b377-R0U+)
2026/06/09(火) 19:08:54.41ID:Gfljtdm+0 これ別に有用だからじゃなくて単に古いAPIも機械的に直しただけのコミットですね
582デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/09(火) 19:25:06.30ID:fXodCgRu0 以下2点を満たす文字列生成の記述方法がoperator<<()以外にあるなら教えてほしいのだが
・書式文字列を使わずに可変長引数を順番に処理できる
・stringなどの一時的インスタンスを作らない
・書式文字列を使わずに可変長引数を順番に処理できる
・stringなどの一時的インスタンスを作らない
583デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/09(火) 20:00:53.89ID:fXodCgRu0 今思いつく、書式文字列なし文字列生成方法は以下の3とおり。
A. カンマを使った関数の引数区切りは", "の2文字。
例:foo("hello", ' ', "world")
B. ビットシフト演算子つまりoperator<<()の連続呼び出しを使った名目上の引数区切りは" << "の4文字。
例:foo << "hello" << ' ' << "world";
C. JavaのStringBuilder::append()ライクな連続呼び出しを使った名目上の引数区切りは".append()"の9文字。
例:foo.append("hello").append(' ').append("world");
引数区切りに要する文字数が少なければ少ないほど、人間にとってキータイプの回数が少なく視認性も高いため、直観的な記述とみなせる。
>>582 はA.を一時的インスタンス生成なし&可変長引数対応で実現したい、と言う意味。
A. カンマを使った関数の引数区切りは", "の2文字。
例:foo("hello", ' ', "world")
B. ビットシフト演算子つまりoperator<<()の連続呼び出しを使った名目上の引数区切りは" << "の4文字。
例:foo << "hello" << ' ' << "world";
C. JavaのStringBuilder::append()ライクな連続呼び出しを使った名目上の引数区切りは".append()"の9文字。
例:foo.append("hello").append(' ').append("world");
引数区切りに要する文字数が少なければ少ないほど、人間にとってキータイプの回数が少なく視認性も高いため、直観的な記述とみなせる。
>>582 はA.を一時的インスタンス生成なし&可変長引数対応で実現したい、と言う意味。
584デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/09(火) 20:19:02.06ID:fXodCgRu0 プラス演算子operator+()の例を書き忘れたので一応、追記。
D. 他言語で多用される文字列連結の名目上の引数区切りは" + "の3文字。
例:foo.("hello" + ' ' + "world");
このD.は一時的なインスタンス生成が不可避なので選択外。
D. 他言語で多用される文字列連結の名目上の引数区切りは" + "の3文字。
例:foo.("hello" + ' ' + "world");
このD.は一時的なインスタンス生成が不可避なので選択外。
585デフォルトの名無しさん (ワッチョイ b395-TsL4)
2026/06/10(水) 00:05:02.14ID:S+1WzGiz0 C++にはC#の文字列補完みたいなのはないんだっけ?
string name = "hoge";
Console.WriteLine($"my name is {name}");
こんなやつ
string name = "hoge";
Console.WriteLine($"my name is {name}");
こんなやつ
586デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/10(水) 00:30:16.56ID:Zdw9zzEn0 変数名nameがコンパイル時とデバッグ情報にしか残らないC++には酷なスタイルではなかろうか
587デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/10(水) 00:53:44.12ID:Zdw9zzEn0 個人的には $"" の記述がstringコンストラクタの糖衣構文として働くようになったら面白いと思う
588デフォルトの名無しさん (ワッチョイ 491d-BNkS)
2026/06/10(水) 01:08:42.28ID:UrzbkxPt0 変数名をプリプロセッサ展開するログ処理のマクロもoperator<<()なら比較的簡単に書ける
#define HOGE(val) #val << '=' << val << ", "
int foo = 123;
const char* bat = "ABC";
cout << HOGE(foo) << HOGE(bar) << endl;
#define HOGE(val) #val << '=' << val << ", "
int foo = 123;
const char* bat = "ABC";
cout << HOGE(foo) << HOGE(bar) << endl;
589デフォルトの名無しさん (ワッチョイ 6968-MRKe)
2026/06/10(水) 02:15:17.14ID:uM4JYBn10 >>587
sリテラルとかユーザー定義リテラルあるけど?
sリテラルとかユーザー定義リテラルあるけど?
590デフォルトの名無しさん (ワッチョイ 6968-MRKe)
2026/06/10(水) 02:16:17.10ID:uM4JYBn10591デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/10(水) 08:34:18.75ID:k+7uTbo/0 現状のC++の仕様では関数呼び出しで記述する場合、std::format()など一時オブジェクトの生成する関数に頼らざるを得ないだろう
592デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/10(水) 09:04:45.27ID:k+7uTbo/0 C++20以降ならstd::to_string()に相当するオーバーライド関数を自分で作って可変長引数Args&&... argsの引数順に呼び出すテンプレート関数になるかな
593はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c174-b1ev)
2026/06/10(水) 09:35:13.30ID:jq+Y0q8G0 >>585
C++ 的な感性だと文字列補完としてではなく静的リフレクションの枠組みでやるべき、つまり直接に言語機能として提供するのではなくよりスコープの広い基本的な機能の上にライブラリとして構築されるべきと考えるのが自然だと思う。
C++26 に静的リフレクションは入る見込み (実質的な検討はもう終わっていて承認手続き待ち) だがそれでもまだ文字列の変数名から変数に置き換えるのは無理なのでその次に期待ってところ。
C++ 的な感性だと文字列補完としてではなく静的リフレクションの枠組みでやるべき、つまり直接に言語機能として提供するのではなくよりスコープの広い基本的な機能の上にライブラリとして構築されるべきと考えるのが自然だと思う。
C++26 に静的リフレクションは入る見込み (実質的な検討はもう終わっていて承認手続き待ち) だがそれでもまだ文字列の変数名から変数に置き換えるのは無理なのでその次に期待ってところ。
594デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/10(水) 10:24:15.63ID:k+7uTbo/0 今のC++標準規格はデバッガで割り込みしづらい環境下での軽量なログ機能という視点が抜けており、まだまだ各開発者が独自の方法で対応せざるを得ない状況
とはいえ遅ればせながらC++23でstacktraceが標準化されたのは良い傾向
とはいえ遅ればせながらC++23でstacktraceが標準化されたのは良い傾向
595デフォルトの名無しさん (ブーイモ MM8b-TsL4)
2026/06/10(水) 10:24:23.79ID:DPxFxv/FM RustにもC#と同じ文字列補完あるんだよね
C++にもがんばってほしい!!
C++にもがんばってほしい!!
596デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/10(水) 10:49:06.52ID:k+7uTbo/0 C++はほかの高級言語と違って、CPU時間、メモリなどの既存リソースへ極力影響を与えないログ機能の需要がある
ランタイム時に既存リソースへ大きな影響を与えてしまうならどれだけログ機能が豪華になっても、あまり使われないだろう
ランタイム時に既存リソースへ大きな影響を与えてしまうならどれだけログ機能が豪華になっても、あまり使われないだろう
597デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/10(水) 11:22:29.26ID:k+7uTbo/0 >>565のような低速なttyへの出力の話ばかりする人はC++のことをまったくわかっていないと思う
598デフォルトの名無しさん (ワッチョイ 8b5f-S+nI)
2026/06/10(水) 12:36:48.26ID:wtlU8sbi0 QTの関数使ってると、ファイルを生成する時、
コピーとか解凍とかすると、プチフリみたいなことが起きる
エクスプローラと同じ関数使った方が良いんか
コピーとか解凍とかすると、プチフリみたいなことが起きる
エクスプローラと同じ関数使った方が良いんか
599デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/10(水) 12:38:01.77ID:Zdw9zzEn0 >>589
C++11から勉強中だからSリテラルは知らなかった、教えてくれてありがとう
C#は$文字列中の{}はもはや式文で、typoはコンパイルエラーになるしエディタによって赤表示してくれるのがいい
教えてくれた2つのリテラルではちょっと実現できないと思う
Rustができてるなら、C++も追従してほしいね
C++11から勉強中だからSリテラルは知らなかった、教えてくれてありがとう
C#は$文字列中の{}はもはや式文で、typoはコンパイルエラーになるしエディタによって赤表示してくれるのがいい
教えてくれた2つのリテラルではちょっと実現できないと思う
Rustができてるなら、C++も追従してほしいね
600デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/10(水) 12:47:54.33ID:Zdw9zzEn0 >>598
QT詳しくないしどの辺の話題かも読み取れなかったけど、マルチプラットフォーム向けの開発でWin32API使ったほうが良いかという話だと、あまりよろしくないのではないかと
QT詳しくないしどの辺の話題かも読み取れなかったけど、マルチプラットフォーム向けの開発でWin32API使ったほうが良いかという話だと、あまりよろしくないのではないかと
601はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c174-b1ev)
2026/06/10(水) 13:42:50.41ID:jq+Y0q8G0 全く環境依存なし (依存する部分は Qt 内で吸収する) というのは諦めたほうが良いと思う。
Qt はリッチなフレームワークとは言えどもあらゆる面の細部に至るまで全く不足がないというわけではないし、不足している中で汚くやりくりするか環境依存を許容するかなら環境依存をしたほうがマシなこともある。
特に問題がないならなるべく Qt の用意している API を使うべきだろうけど、実際に問題があるんでしょ?
欲をいうなら Qt を改善したらもっと良いけど。
Qt はリッチなフレームワークとは言えどもあらゆる面の細部に至るまで全く不足がないというわけではないし、不足している中で汚くやりくりするか環境依存を許容するかなら環境依存をしたほうがマシなこともある。
特に問題がないならなるべく Qt の用意している API を使うべきだろうけど、実際に問題があるんでしょ?
欲をいうなら Qt を改善したらもっと良いけど。
602デフォルトの名無しさん (ワッチョイ 411d-BNkS)
2026/06/10(水) 14:04:33.58ID:k+7uTbo/0 まず疑うべきはウイルス対策ソフトの設定だろうけど
603デフォルトの名無しさん (ワッチョイ 53c3-cOba)
2026/06/10(水) 17:22:02.70ID:z35PqeRF0 >>598
こういうのこそ…っていうことで、AIにぶん投げた
・QFile::copy()はブロッキング。それをメイン(UI)スレッドでやっちゃうのが あるある
・プチフリするからって QCoreApplication::processEvents() を呼ぶってのがwebに出ているが、これはアンチパターン
・QFile::readAll()なんかつかってると、どかっとメモリ確保するのでページフォールトでプチフリが加速する
そういう世界なのね、うん、たぶんQtスレ行ったほうが幸せになれる
こういうのこそ…っていうことで、AIにぶん投げた
・QFile::copy()はブロッキング。それをメイン(UI)スレッドでやっちゃうのが あるある
・プチフリするからって QCoreApplication::processEvents() を呼ぶってのがwebに出ているが、これはアンチパターン
・QFile::readAll()なんかつかってると、どかっとメモリ確保するのでページフォールトでプチフリが加速する
そういう世界なのね、うん、たぶんQtスレ行ったほうが幸せになれる
604600 (ワッチョイ 9b06-mHdW)
2026/06/10(水) 17:38:02.67ID:Zdw9zzEn0605デフォルトの名無しさん (ワッチョイ 69e1-tI3w)
2026/06/11(木) 05:44:41.56ID:Ca1kJbre0606デフォルトの名無しさん (ワッチョイ 69e1-tI3w)
2026/06/11(木) 05:52:06.25ID:Ca1kJbre0 >>596
c++で有名なロガーライブラリといったらspdlogだがこれもfmtを使っている
最近ならそれよりさらに高速なQuillがあるがこれもfmtを使ってる
お前c++界隈のこと何も知らないカスなの自覚した方がいいぞ
c++で有名なロガーライブラリといったらspdlogだがこれもfmtを使っている
最近ならそれよりさらに高速なQuillがあるがこれもfmtを使ってる
お前c++界隈のこと何も知らないカスなの自覚した方がいいぞ
607デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/11(木) 08:41:59.01ID:P5O/X5j+0 std::cout << "Hello, world!¥n";
は皆が知ってる僕らの永遠のアイドル!
は皆が知ってる僕らの永遠のアイドル!
608デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/11(木) 10:20:11.43ID:RJINUrDg0 書式文字列を「使える」ことと「使わなければならない」ことは別だけど、使えるに越したことはない
以下の>>579 のようにストリームの実体LOG(INFO)をコードに直接書くと、リリースビルド向けにログ出力をコメントアウトしきれない
LOG(INFO) << absl::StreamFormat("User: %s, ID: 0x%08x", "Alice", 0x123456);
どうせマクロを使うなら、>>490 のようにストリームの実体を隠蔽するのが無難。マクロの書き方次第でログコードそのものを消せる。
#if 1
#define LOG(x, y) if (IS_HIT_DLGFLG(x)) { cout << y << endl; }
#else
#define LOG(x, y)
#endif
LOG(INFO, 1 << num << "abc=" << lpstr << absl::StreamFormat("User: %s, ID: 0x%08x", "Alice", 0x123456));
以下の>>579 のようにストリームの実体LOG(INFO)をコードに直接書くと、リリースビルド向けにログ出力をコメントアウトしきれない
LOG(INFO) << absl::StreamFormat("User: %s, ID: 0x%08x", "Alice", 0x123456);
どうせマクロを使うなら、>>490 のようにストリームの実体を隠蔽するのが無難。マクロの書き方次第でログコードそのものを消せる。
#if 1
#define LOG(x, y) if (IS_HIT_DLGFLG(x)) { cout << y << endl; }
#else
#define LOG(x, y)
#endif
LOG(INFO, 1 << num << "abc=" << lpstr << absl::StreamFormat("User: %s, ID: 0x%08x", "Alice", 0x123456));
609デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/11(木) 11:26:01.36ID:RJINUrDg0 >>592 を試してみたが、可変長引数Args&&... argsの場合、スタックが引数の逆順に呼び出されるのを回避するにはインスタンスの一時的生成が不可避。
よって、残念ながら下記URLの可変引数テンプレートと「パラメータパックの拡張」は使えない。
https://cpprefjp.github.io/lang/cpp11/variadic_templates.html
一時インスタンスを生成せず引数呼び出し順で追記を実装にするには引数の数に応じた従来通りの関数オーバーロード定義が必須になる。
関数でoperator<<()と等価の機能を実装する例は以下のとおり。ここでは引数の数は1個から4個まで定義した。
template<typename OS, typename T1> OS& AddTest(OS& os, const T1& a) { os << a; return os; }
template<typename OS, typename T1, typename T2> OS& AddTest(OS& os, const T1& a, const T2& b) { os << a << b; return os; }
template<typename OS, typename T1, typename T2, typename T3> OS& AddTest(OS& os, const T1& a, const T2& b, const T3& c) { os << a << b << c; return os; }
template<typename OS, typename T1, typename T2, typename T3, typename T4> OS& AddTest(OS& os, const T1& a, const T2& b, const T3& c, const T4& d) { os << a << b << c << d; return os; }
AddTest(std::cout, "hello", ' ', 1, "world");
よって、残念ながら下記URLの可変引数テンプレートと「パラメータパックの拡張」は使えない。
https://cpprefjp.github.io/lang/cpp11/variadic_templates.html
一時インスタンスを生成せず引数呼び出し順で追記を実装にするには引数の数に応じた従来通りの関数オーバーロード定義が必須になる。
関数でoperator<<()と等価の機能を実装する例は以下のとおり。ここでは引数の数は1個から4個まで定義した。
template<typename OS, typename T1> OS& AddTest(OS& os, const T1& a) { os << a; return os; }
template<typename OS, typename T1, typename T2> OS& AddTest(OS& os, const T1& a, const T2& b) { os << a << b; return os; }
template<typename OS, typename T1, typename T2, typename T3> OS& AddTest(OS& os, const T1& a, const T2& b, const T3& c) { os << a << b << c; return os; }
template<typename OS, typename T1, typename T2, typename T3, typename T4> OS& AddTest(OS& os, const T1& a, const T2& b, const T3& c, const T4& d) { os << a << b << c << d; return os; }
AddTest(std::cout, "hello", ' ', 1, "world");
610デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/11(木) 13:05:30.96ID:RJINUrDg0 >>609
訂正
以下のようにstd::forward()をつかって可変長引数を引数順に追記できたわ
#include <utility>
template<typename OS>
OS& AddTest2(OS& os) { return os; }
template <typename OS, class Head, class... Tail>
OS& AddTest2(OS&os, Head&& head, Tail&&... tail)
{
os << head;
return AddTest2(os, std::forward<Tail>(tail)...);
}
AddTest2(std::cout, "hello", ' ', 1, "world", 55) << std::endl;
訂正
以下のようにstd::forward()をつかって可変長引数を引数順に追記できたわ
#include <utility>
template<typename OS>
OS& AddTest2(OS& os) { return os; }
template <typename OS, class Head, class... Tail>
OS& AddTest2(OS&os, Head&& head, Tail&&... tail)
{
os << head;
return AddTest2(os, std::forward<Tail>(tail)...);
}
AddTest2(std::cout, "hello", ' ', 1, "world", 55) << std::endl;
611デフォルトの名無しさん (ワッチョイ 0916-bY8R)
2026/06/11(木) 13:34:01.08ID:Wz2yfzb40 そんなん書いても99割読んでねえぞ
612デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/11(木) 13:53:43.06ID:RJINUrDg0 operator<<()と等価機能の書式指定なし可変長引数の追記処理はstd::forward()を使えばC++11のころから利用可能だった、ということになる。
引数の数だけ再帰呼び出しが深くなる問題はあるがstd::forward()のコストが小さいなら十分代替可能なのかもしれない。
なお、上述 >>609,610 サンプルのテンプレート関数のストリーム型をostreamではなくtypenameにしているのは、ostreamから派生しないクラスでも使えるようにするため。
引数の数だけ再帰呼び出しが深くなる問題はあるがstd::forward()のコストが小さいなら十分代替可能なのかもしれない。
なお、上述 >>609,610 サンプルのテンプレート関数のストリーム型をostreamではなくtypenameにしているのは、ostreamから派生しないクラスでも使えるようにするため。
613デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/11(木) 14:16:14.20ID:RJINUrDg0 >>611
要は、C++に新機能が追加された今でもすなおにoperator<<()を使うのが最適なことが多いという話。
要は、C++に新機能が追加された今でもすなおにoperator<<()を使うのが最適なことが多いという話。
614デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/11(木) 14:44:17.14ID:RJINUrDg0 >>605
> operator overloadを使ったら軽量ロガーになるという珍説
これ以上速くしようがないレベルの話であり、考えれば誰でもわかる。珍説と考える人は論理的思考力が弱い。
JavaのStringBuilder.append(x)相当の処理が連続呼び出しされているだけなので、軽量なのは自明であり証明不要。
計測したいならoperator<<()を受け取るクラスを自作して思い思いの条件で試せばいいだけ。
> operator overloadを使ったら軽量ロガーになるという珍説
これ以上速くしようがないレベルの話であり、考えれば誰でもわかる。珍説と考える人は論理的思考力が弱い。
JavaのStringBuilder.append(x)相当の処理が連続呼び出しされているだけなので、軽量なのは自明であり証明不要。
計測したいならoperator<<()を受け取るクラスを自作して思い思いの条件で試せばいいだけ。
615デフォルトの名無しさん (ワッチョイ 1399-bu3S)
2026/06/11(木) 20:29:06.39ID:OMe8BQUG0 統合エディタが勝手に閉じカッコ書くのすげー使いづらい
前から後ろに書きたいんじゃ
前から後ろに書きたいんじゃ
616デフォルトの名無しさん (ラクッペペ MM8b-tZzN)
2026/06/11(木) 20:35:17.65ID:kRK1kPewM そういうのって設定にあるんじゃない?
617はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c181-b1ev)
2026/06/11(木) 20:45:16.09ID:VWwWdhkJ0 比較演算子の < を入力しようとしたのにテンプレート引数だと思われたのか > が補われたことがある。
618デフォルトの名無しさん (アウアウキー Sa6d-CHFN)
2026/06/11(木) 21:11:17.96ID:ZfEMKNH1a 俺は emacs のエレクトリック文字とかいうクソ機能はぜんぶ殺してる
そもそも俺がコード書くときはボーッとして無意識に入力してる時ですら例えば
hoge() といきなりカッコ閉じまで書いて無意識にカーソルひとつもどしてからかっこの中を書くので
こういう余計な補完機能はほんと邪魔にしかならない
そもそも俺がコード書くときはボーッとして無意識に入力してる時ですら例えば
hoge() といきなりカッコ閉じまで書いて無意識にカーソルひとつもどしてからかっこの中を書くので
こういう余計な補完機能はほんと邪魔にしかならない
619デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/11(木) 23:48:29.40ID:P5O/X5j+0 class CCC {}; まで一度に書きたいのに}だけ補完され;無しのままカーソルがカッコの中なの許せない
620デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/11(木) 23:56:54.66ID:P5O/X5j+0 と思ったが補完無視してタイプすれば問題なかった
621デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/12(金) 00:18:33.89ID:Q5++65Sj0622デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/12(金) 09:32:21.75ID:WLOdnAUI0623デフォルトの名無しさん (ワッチョイ 9b06-anDy)
2026/06/12(金) 12:57:59.07ID:Q5++65Sj0624デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/12(金) 13:39:55.84ID:WLOdnAUI0625デフォルトの名無しさん (ワッチョイ 9b06-mHdW)
2026/06/12(金) 18:39:55.16ID:Q5++65Sj0626デフォルトの名無しさん (ワッチョイ c14e-pZ0l)
2026/06/13(土) 05:15:53.61ID:OtU81Fyj0 軽くしか見てないから勘違いしてたらスマンけど、ユニバーサル参照じゃないならforwardいらんよ
627デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/13(土) 09:02:25.17ID:IzH1EUzk0 >>626
情報ありがとう。
ユニバーサル参照と聞いて気づいたのだけど、関数定義 >>610のAddTest2(OS& os, ...) や >>623のdump_var(O& os, ...) は、
第1仮引数を従来の参照からユニバーサル参照OS&& osに変える、つまり、
AddTest2(OS&& os, ...), dump_var(O&& os, ...)に変えることで、一時的な変数にも利用できるようになる。
具体例としてクラスHogeの一時的インスタンスに書き込んで取得する AddTest2(Hoge(), "foo", 1, "bar") も可能ということ。
従来の参照のままだとコンパイル時に警告やエラーになってしまう。
情報ありがとう。
ユニバーサル参照と聞いて気づいたのだけど、関数定義 >>610のAddTest2(OS& os, ...) や >>623のdump_var(O& os, ...) は、
第1仮引数を従来の参照からユニバーサル参照OS&& osに変える、つまり、
AddTest2(OS&& os, ...), dump_var(O&& os, ...)に変えることで、一時的な変数にも利用できるようになる。
具体例としてクラスHogeの一時的インスタンスに書き込んで取得する AddTest2(Hoge(), "foo", 1, "bar") も可能ということ。
従来の参照のままだとコンパイル時に警告やエラーになってしまう。
628デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/13(土) 09:22:08.72ID:IzH1EUzk0 自作バッファリングクラスを必ずしもoperator<<()オーバーロードまみれで記述する必要はないけど、
ostreamインスタンスに対して書き込む既存のソースコードをテンプレート関数化して汎用したいならoperator<<()オーバーロードはやはり有益。
老舗旅館の増改築のようなostreamやostringstreamを反面教師として軽量な自作バッファリングクラスを作るのはけっこう楽しいのでやってみるといい。
ostreamインスタンスに対して書き込む既存のソースコードをテンプレート関数化して汎用したいならoperator<<()オーバーロードはやはり有益。
老舗旅館の増改築のようなostreamやostringstreamを反面教師として軽量な自作バッファリングクラスを作るのはけっこう楽しいのでやってみるといい。
629デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/13(土) 09:58:31.69ID:IzH1EUzk0 プリプロセッサ演算子の一種で変数名を文字列に変換するのに有用な文字列化演算子#は、引数の配列 __VA_ARGS__ に対しても利用可能で、
関数呼び出しの引数の途中で改行されたりコメントが紛れ込んでいても良きように計らってくれるので、# __VA_ARGS__ の利用は結構おススメ
関数呼び出しの引数の途中で改行されたりコメントが紛れ込んでいても良きように計らってくれるので、# __VA_ARGS__ の利用は結構おススメ
630はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69f8-bY8R)
2026/06/13(土) 09:59:13.85ID:/yTTL/2U0631デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/13(土) 10:35:03.19ID:IzH1EUzk0632はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 69f8-bY8R)
2026/06/13(土) 10:52:19.15ID:/yTTL/2U0 文脈から明らかなのでそんなに重要ではないけどオーバーライドでなくオーバーロードね。
(なんか >>457 からずっとオーバーライドと書いてるのでちょっとしたミスではなく間違って覚えてる可能性があると思って念のため指摘。)
C++ 用語的にはオーバーライドは仮想関数を派生クラスで定義の置き換えすることを言う。
(なんか >>457 からずっとオーバーライドと書いてるのでちょっとしたミスではなく間違って覚えてる可能性があると思って念のため指摘。)
C++ 用語的にはオーバーライドは仮想関数を派生クラスで定義の置き換えすることを言う。
633デフォルトの名無しさん (ワッチョイ 411d-anDy)
2026/06/13(土) 11:25:31.63ID:IzH1EUzk0 >>632
その通り。それぞれ違うものと知りながら間違えていた。以後気をつける。
C++標準のバッファリングクラスostringstreamは、sizeof()が、MSVCで232バイト、WSL2のg++で376バイトとなり、スタックで利用するにはやや巨大。
派生元のostreamはsizeof()がMSVCで112バイト、WSL2のg++で272バイトになる。
ostringstreamはostreamの派生クラスという性質上、ostreamよりもスタックを消費する困った代物であり、
多くの開発ライブラリがostringstreamの代替となる軽量かつ高速なバッファリングクラスを自前で用意しているのは当然のことと言える。
その通り。それぞれ違うものと知りながら間違えていた。以後気をつける。
C++標準のバッファリングクラスostringstreamは、sizeof()が、MSVCで232バイト、WSL2のg++で376バイトとなり、スタックで利用するにはやや巨大。
派生元のostreamはsizeof()がMSVCで112バイト、WSL2のg++で272バイトになる。
ostringstreamはostreamの派生クラスという性質上、ostreamよりもスタックを消費する困った代物であり、
多くの開発ライブラリがostringstreamの代替となる軽量かつ高速なバッファリングクラスを自前で用意しているのは当然のことと言える。
634デフォルトの名無しさん (ワッチョイ 6da4-9O8W)
2026/06/16(火) 03:01:51.91ID:8oslX9HY0 >>598
QtではGUI部品はメインスレッドでイベントループに入っていないと固まるから、プチフリ嫌なら負荷がかかる処理は全部サブスレッド実行する必要がある。
QtではGUI部品はメインスレッドでイベントループに入っていないと固まるから、プチフリ嫌なら負荷がかかる処理は全部サブスレッド実行する必要がある。
635デフォルトの名無しさん (ワッチョイ 591d-ziOc)
2026/06/16(火) 19:30:01.05ID:vjRNZ0V60 C++言語に「ネコミミ」演算子!? かわいい顔して強力なメタプログラミング機能を提供 - やじうまの杜 - 窓の杜
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2117584.html
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2117584.html
636はちみつ餃子 ◆8X2XSCHEME (ワッチョイ edf8-lBVa)
2026/06/16(火) 20:03:34.01ID:0FDI/M0K0 ^ 単体で排他的論理和を意味するわけだがその意味でふたつ連続する使い方はあり得なかった。
逆に言えば ^^ だと必ずリフレクション演算子であることが高度な構文解析を経るまでもなく確定する。
上手い選択だと思う。
逆に言えば ^^ だと必ずリフレクション演算子であることが高度な構文解析を経るまでもなく確定する。
上手い選択だと思う。
637デフォルトの名無しさん (アウアウ Sa56-W7W9)
2026/06/16(火) 20:20:41.02ID:j2UY3q5sa auto r = ^^b;) // ← パソコン通信時代の顔文字にみえる
638デフォルトの名無しさん (ワッチョイ 0606-9Vgo)
2026/06/16(火) 20:25:22.24ID:G+WCJJLi0 かつてはfoo<vector<Bar> >が要スペースだったのも良い思い出
639デフォルトの名無しさん (ワッチョイ 591d-ziOc)
2026/06/16(火) 20:27:18.17ID:vjRNZ0V60 検索エンジンやAIは、演算子を重要なキーワードとして認識せずただの記号として捨ててしまうだろうから、知識が共有されづらいかもしれない
キーワードとして検出しづらいという点では、C++のラムダ式も同じ問題を抱えている
PerlがPythonの後塵を拝した原因のひとつが、キーワードとして検出しづらい特殊変数だった
キーワードとして検出しづらいという点では、C++のラムダ式も同じ問題を抱えている
PerlがPythonの後塵を拝した原因のひとつが、キーワードとして検出しづらい特殊変数だった
640デフォルトの名無しさん (ワッチョイ 4225-4P7d)
2026/06/16(火) 21:02:46.54ID:hqSoL+ez0641デフォルトの名無しさん (ワッチョイ 6dda-a1bE)
2026/06/16(火) 21:18:22.05ID:NWITRD5L0 ググラビリティが悪いって事やろ
642デフォルトの名無しさん (アウアウ Sa56-W7W9)
2026/06/16(火) 21:25:21.30ID:j2UY3q5sa ググラビリティでいうと go は最悪
検索の覇者グーグルのくせに go ってなんだよ go ってバカじゃねーのwwww
っておもった
検索の覇者グーグルのくせに go ってなんだよ go ってバカじゃねーのwwww
っておもった
643デフォルトの名無しさん (ワッチョイ 6dda-a1bE)
2026/06/16(火) 21:39:02.69ID:NWITRD5L0 GO→行く、囲碁
RUST→錆、RUST(ゲーム)
C# C++→記号が認識されない
C R→1文字は最低文字数やアルファベットに引っかかる可能性
RUST→錆、RUST(ゲーム)
C# C++→記号が認識されない
C R→1文字は最低文字数やアルファベットに引っかかる可能性
644デフォルトの名無しさん (アウアウ Sa56-W7W9)
2026/06/16(火) 21:43:19.14ID:j2UY3q5sa C/C++ はもちろんのこと C# もまだググラビリティとかそんなに意識しなくていい時代の発明品だからいいけど
go なんて自分とこがやってるサービスの本質なんもかんがえずに名前つけてアホじゃねーの、っていう
go なんて自分とこがやってるサービスの本質なんもかんがえずに名前つけてアホじゃねーの、っていう
645デフォルトの名無しさん (アウアウウー Saa5-lrjJ)
2026/06/16(火) 22:16:06.19ID:FO3SxX/Na Julia→av
646はちみつ餃子 ◆8X2XSCHEME (ワッチョイ edf8-lBVa)
2026/06/16(火) 23:08:00.01ID:0FDI/M0K0 やってみたのか? 記号類もちゃんと認識される。
少なくともグーグルや Bing 、 DuckDuckGo みたいな主要ウェブ検索が記号類を問答無用で除去するなんてことはないよ。
トークナイザが切り分けるのが上手くいってないのか適切なページにマッチしないことは結構あるが C++ や C# といった名前くらいは問題なく C++ や C# として認識される。
少なくともグーグルや Bing 、 DuckDuckGo みたいな主要ウェブ検索が記号類を問答無用で除去するなんてことはないよ。
トークナイザが切り分けるのが上手くいってないのか適切なページにマッチしないことは結構あるが C++ や C# といった名前くらいは問題なく C++ や C# として認識される。
647デフォルトの名無しさん (ワッチョイ 6dda-a1bE)
2026/06/16(火) 23:13:08.30ID:NWITRD5L0 すまん検索エンジン以外も含めてる
648デフォルトの名無しさん (ワッチョイ 6d35-Ffsa)
2026/06/17(水) 06:13:45.04ID:lvRO82bE0 goはgolangっ入れればよくね?
もう検索する時代じゃないけど
もう検索する時代じゃないけど
649はちみつ餃子 ◆8X2XSCHEME (ワッチョイ edf8-lBVa)
2026/06/17(水) 08:56:24.64ID:UoxAeQY00 Go を Golang にする慣例は良いんだがそれを言語全体の慣例だと勘違いしたのか C の記事のハッシュタグに Clang と入ってることが結構あってイラッとする。
650デフォルトの名無しさん (ワッチョイ 591d-ziOc)
2026/06/17(水) 09:29:46.48ID:A9czWaBL0 熟考の末に採用された演算子<<オーバーロードと追記処理の相性の良さを理解できない初心者がC++98誕生から30年近く経った今でもいる原因のひとつが、
演算子が人間にとっても検索エンジンにとっても探しにくいことにある
リフレクション演算子やスプライス演算子が演算子である必要はまったくなかっただろう
sizeofやtypeidのようなグローバルスコープの演算子キーワードがこれ以上増えないよう名前空間に閉じ込めたテンプレート関数での機能提供にしたほうが良かったのではないか
演算子が人間にとっても検索エンジンにとっても探しにくいことにある
リフレクション演算子やスプライス演算子が演算子である必要はまったくなかっただろう
sizeofやtypeidのようなグローバルスコープの演算子キーワードがこれ以上増えないよう名前空間に閉じ込めたテンプレート関数での機能提供にしたほうが良かったのではないか
651デフォルトの名無しさん (ワッチョイ 994e-Gxjf)
2026/06/17(水) 23:46:05.02ID:VGIYVORh0 >>636
^^はD言語でのように累乗演算子として割り当てられるべきだったと思う。
^^はD言語でのように累乗演算子として割り当てられるべきだったと思う。
652デフォルトの名無しさん (JP 0Hf6-9O8W)
2026/06/18(木) 04:39:08.29ID:dxYvew7jH >>651
いちいちstd::pow()とかめんどいもんな
いちいちstd::pow()とかめんどいもんな
653デフォルトの名無しさん (ワッチョイ 6d89-Ffsa)
2026/06/18(木) 16:17:04.20ID:jdpG1dl00 静的リフレクションはいいけどどうせデバッグ手法はコンパイラのベンダーまかせで正味ろくなデバッグツールは提供されんだろな
このあたりの開発者体験がいまだに軽視されてるところがc++のクソなところだよ
このあたりの開発者体験がいまだに軽視されてるところがc++のクソなところだよ
654デフォルトの名無しさん (ワッチョイ 591d-ziOc)
2026/06/19(金) 12:48:28.03ID:PTJi/AuJ0 >>558 みたいな開発者視点の乏しい人がC++スレでオラつく現状は健全ではないね
書式文字列だけでは解決できない多言語環境や多様な書体に対する想像力が欠如してる
書式文字列だけでは解決できない多言語環境や多様な書体に対する想像力が欠如してる
655デフォルトの名無しさん (ワッチョイ 9279-7+Od)
2026/06/19(金) 13:18:04.52ID:O9A3wpTv0 std::mutexって存在意義ないですよね?
いままでWin32 API使ってたので名前付きミューテックスが当たり前だと思ってました
std::mutexは名前付きじゃないのでプロセス間の同期処理に使うのは難しいようです(検索してみたところ共有メモリを介してあれこれするらしい)
C++標準ライブラリにも名前付きミューテックスがあればいいのに、、、
いままでWin32 API使ってたので名前付きミューテックスが当たり前だと思ってました
std::mutexは名前付きじゃないのでプロセス間の同期処理に使うのは難しいようです(検索してみたところ共有メモリを介してあれこれするらしい)
C++標準ライブラリにも名前付きミューテックスがあればいいのに、、、
656はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1936-7Qhx)
2026/06/19(金) 14:42:43.39ID:lIVJD6Z/0 プロセスをまたぐ処理は OS の協力がないと成立しないし、 OS がプロセス間同期を提供するモデルを言語側が決めつけることはできない。(そもそもプロセスの概念がない環境だってあるだろう。)
言語仕様で決めてもその通りに実現できないと意味がないので実行環境 (ホスト) によって差が大きいところはあまり積極的には決めないか最大公約数的に最小限だけなのは C++ の思想として普通。
標準ライブラリだけで全部をできるようにしようとはしてない。
言語仕様で決めてもその通りに実現できないと意味がないので実行環境 (ホスト) によって差が大きいところはあまり積極的には決めないか最大公約数的に最小限だけなのは C++ の思想として普通。
標準ライブラリだけで全部をできるようにしようとはしてない。
657デフォルトの名無しさん (ワッチョイ 591d-ziOc)
2026/06/19(金) 15:52:04.72ID:PTJi/AuJ0 C++11でスレッドが標準化されたことでmalloc, free系システムコールがスレッド・セーフのために排他ロックしうることを想定しなければならなくなった
高機能ではあるもののstringインスタンスを一時的に大量生成するstd::formatは、タイミング依存の現象に対する監視ログ出力に不向き
高機能ではあるもののstringインスタンスを一時的に大量生成するstd::formatは、タイミング依存の現象に対する監視ログ出力に不向き
658デフォルトの名無しさん (ワッチョイ 9238-7+Od)
2026/06/19(金) 16:08:04.21ID:O9A3wpTv0 >>656
ありがとうございます
Qt core の QSystemSemaphore の使用を検討してみます
Linux / Windows でなるべく同じコードにしたかったので sem_open は避けました
ありがとうございます
Qt core の QSystemSemaphore の使用を検討してみます
Linux / Windows でなるべく同じコードにしたかったので sem_open は避けました
659デフォルトの名無しさん (ワッチョイ 922b-pKxw)
2026/06/19(金) 17:49:34.75ID:2F5mDYDa0 stringインスタンスを大量生成ってなに?
660デフォルトの名無しさん (ワッチョイ 6d70-Ffsa)
2026/06/19(金) 18:46:16.74ID:09P/+d3H0 >>655
当然ながらstd::mutexの方がはるかに軽量なので通常のインプロセスの排他制御で性能意識するならこっちを使う
Win32で言うならCRITICAL_SECTION に相当するもの
ま、でも WaitForMultipleObjectsで同時待ちできるのでMutexを使いたくなるのはある
当然ながらstd::mutexの方がはるかに軽量なので通常のインプロセスの排他制御で性能意識するならこっちを使う
Win32で言うならCRITICAL_SECTION に相当するもの
ま、でも WaitForMultipleObjectsで同時待ちできるのでMutexを使いたくなるのはある
661デフォルトの名無しさん (ワッチョイ 4225-4P7d)
2026/06/20(土) 16:09:22.84ID:mcQsmb5t0 ずっとPython使ってたら、
C++だんだん忘れてきてきる…
C++だんだん忘れてきてきる…
662デフォルトの名無しさん (ワッチョイ 79a1-QJeU)
2026/06/20(土) 16:22:01.47ID:eeWopVC/0 Python触ってると退行していく感じがして仕事以外で使ってない
昔のBASICを弄ってる感が強くてな
昔のBASICを弄ってる感が強くてな
663デフォルトの名無しさん (アウアウ Sa56-W7W9)
2026/06/20(土) 17:16:52.57ID:KWbWTLA1a わかる
あんなクソ言語、金もらえなきゃ使う気なんてまったくおきない
あんなクソ言語、金もらえなきゃ使う気なんてまったくおきない
664デフォルトの名無しさん (ワッチョイ dd1d-ziOc)
2026/06/20(土) 18:42:45.53ID:6DeWQ7pn0 Windows版Pythonはsubprocess.run()を使ったpyスクリプトが、batスクリプトの代替やPowerShellの貧弱なaliasの代替として重宝する
Windows版PerlがいまだにANSIコード縛りなのとは対照的に、Windows版PythonはUnicode対応済みでUTF-16やwstringでプラグインを書ける
Windows版PerlがいまだにANSIコード縛りなのとは対照的に、Windows版PythonはUnicode対応済みでUTF-16やwstringでプラグインを書ける
665デフォルトの名無しさん (ワッチョイ 4225-4P7d)
2026/06/20(土) 18:42:55.15ID:mcQsmb5t0666デフォルトの名無しさん (ワッチョイ edba-dqMw)
2026/06/20(土) 18:54:13.19ID:Bza0fqjO0 AI扱うならPythonは避けて通れないからな
どんなクソ言語でもエコシステムを作り上げられたらそれが正義なんだよ
どんなクソ言語でもエコシステムを作り上げられたらそれが正義なんだよ
667デフォルトの名無しさん (ワッチョイ 5f7c-NImZ)
2026/06/21(日) 07:34:05.79ID:hYidpCxV0 平田豊さんが今更 書いてる。
668デフォルトの名無しさん (ワッチョイ 5f7a-I1WB)
2026/06/21(日) 09:47:17.11ID:TTWKReyS0 Pythonってコンパイラなかったっけ?
おまいらは使ってないの?
おまいらは使ってないの?
669デフォルトの名無しさん (ワッチョイ 5fba-2/5S)
2026/06/21(日) 11:17:48.52ID:YHprLyhf0 Cython,PyPy,Nuitka,mypyc,Pyston…
結局どれも中途半端だったな
結局どれも中途半端だったな
670デフォルトの名無しさん (ワッチョイ 7f25-cVdG)
2026/06/21(日) 13:13:57.96ID:f8AFR3e70671デフォルトの名無しさん (ワッチョイ 5f1d-NImZ)
2026/06/22(月) 11:26:53.64ID:d/zEw5d30 >PowerShellの貧弱なaliasの代替
具体的にいうと、PowerShellは引数つきコマンドをaliasにできないので、Pythonが代替として優れている
bat拡張子のバッチスクリプトだとCTRL+Cで中止シグナルを受け取った後にY/nメッセージが出て良くない
機械学習やAIでPythonが使われる傾向があるのも、Pythonが他のスクリプト言語に比べてプロセス間通信の機能が優れているからであって、
プログラミング言語としてのPythonそのものは野暮ったい
具体的にいうと、PowerShellは引数つきコマンドをaliasにできないので、Pythonが代替として優れている
bat拡張子のバッチスクリプトだとCTRL+Cで中止シグナルを受け取った後にY/nメッセージが出て良くない
機械学習やAIでPythonが使われる傾向があるのも、Pythonが他のスクリプト言語に比べてプロセス間通信の機能が優れているからであって、
プログラミング言語としてのPythonそのものは野暮ったい
672デフォルトの名無しさん (ワッチョイ 5f1d-NImZ)
2026/06/22(月) 11:42:50.45ID:d/zEw5d30 最近ようやくマイクロソフト謹製grepがCoreutils経由で提供された。
Coreutilsのgrepは色付き表示オプション--color=autoがデフォルトになっている。
バッチプログラムでgrep='grep --color=auto'のようなaliasを代替すると、引数でサーカムフレックス「^」のエスケープを意識する必要があった。
前述のようにPowerShellは引数付きaliasをサポートしないのでfunctionで代替したいところだが、PowerShellはfunctionのパイプ接続が高機能の代償として遅いので使い物にならない。
軽量なPythonスクリプトをラッパーとして使わざるを得ないことが多い。
Coreutilsのgrepは色付き表示オプション--color=autoがデフォルトになっている。
バッチプログラムでgrep='grep --color=auto'のようなaliasを代替すると、引数でサーカムフレックス「^」のエスケープを意識する必要があった。
前述のようにPowerShellは引数付きaliasをサポートしないのでfunctionで代替したいところだが、PowerShellはfunctionのパイプ接続が高機能の代償として遅いので使い物にならない。
軽量なPythonスクリプトをラッパーとして使わざるを得ないことが多い。
673はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5ff8-RTsw)
2026/06/22(月) 11:50:37.61ID:tuPvu1ow0 JScript なら確実に Windows にあるし、少し高度なシェルスクリプトみたいなことをやりたいなら私としてはこれを推したいんだがマイクロソフト的には WSH をフェードアウトしたいみたいだから微妙な存在になってしまった……
674デフォルトの名無しさん (ワッチョイ 7fc3-NfMx)
2026/06/22(月) 12:01:41.73ID:TR+Xl3ql0675デフォルトの名無しさん (ラクッペペ MM4f-eBB2)
2026/06/22(月) 12:14:28.97ID:DRqm4hLFM676デフォルトの名無しさん (ワッチョイ dfe2-VAvK)
2026/06/22(月) 15:47:13.06ID:gBe6h/Yh0 Pythonのコンパイラが流行らないのは
結局Pythonのインタプリタで出来る範囲を超えないから
ネイティブの速度でPyObjectを扱えるってだけで
ネイティブの速さになる訳じゃない
結局Pythonのインタプリタで出来る範囲を超えないから
ネイティブの速度でPyObjectを扱えるってだけで
ネイティブの速さになる訳じゃない
677デフォルトの名無しさん (ワッチョイ 7f89-kjau)
2026/06/22(月) 18:17:47.30ID:T1W+1bp70 cライブラリ叩いてるだけだからそもそもいらん
678デフォルトの名無しさん (ワッチョイ 7f25-cVdG)
2026/06/22(月) 20:00:40.42ID:Jw0BHmCl0679デフォルトの名無しさん (ワッチョイ 7f6a-kRTs)
2026/06/22(月) 20:25:02.58ID:8wvhHATQ0 >>676
意味が分からないんだが
特定言語(特定環境下)でのインタプリタもコンパイラも出来ることは同じじゃないの?
C++とか含めてのコンパイラが流行っている言語はインタプリタに出来ないことが出来ているからなの?
意味が分からないんだが
特定言語(特定環境下)でのインタプリタもコンパイラも出来ることは同じじゃないの?
C++とか含めてのコンパイラが流行っている言語はインタプリタに出来ないことが出来ているからなの?
680はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dfe8-GA92)
2026/06/22(月) 20:59:30.06ID:L+3qvPfV0 性能的に足を引っ張っているのは動的型という部分で、これは要するに実行時に型のチェックをしたり管理用のテーブルをたどるなどの余計なことをしなければならない (事前にわからないので) ということを意味する。
ネイティブコードにしたところでそれをやらなくてよくなるわけでもないし、インタプリタであっても (処理系内部の) ネイティブコードの部分がやってたことなのでなにも変わらない。
ネイティブコードにコンパイルしてもインタプリタですでにやってたことより良くならないということを言ってる。
ここでは前提として「動的型の Python をネイティブコードにコンパイルしようとしないのは」「もしネイティブコードにコンパイルしてもインタプリタの Python と比べて」という話であって、C++ などと比較しての話ではない。
ネイティブコードにしたところでそれをやらなくてよくなるわけでもないし、インタプリタであっても (処理系内部の) ネイティブコードの部分がやってたことなのでなにも変わらない。
ネイティブコードにコンパイルしてもインタプリタですでにやってたことより良くならないということを言ってる。
ここでは前提として「動的型の Python をネイティブコードにコンパイルしようとしないのは」「もしネイティブコードにコンパイルしてもインタプリタの Python と比べて」という話であって、C++ などと比較しての話ではない。
681デフォルトの名無しさん (JP 0Hf3-NImZ)
2026/06/23(火) 09:37:24.89ID:0E3vdVUZH VSスレとのマルチになっちゃうんだけどVC++23のstatic lambdaってピュアな関数ポインタ返してくれる?
VC++20以下のlambdaだとキャプチャ一切なくても返されるポインタはキャプチャ用の第一引数rcxを退避させるラッパが1段挟まったものになっていたのだけど
VC++20以下のlambdaだとキャプチャ一切なくても返されるポインタはキャプチャ用の第一引数rcxを退避させるラッパが1段挟まったものになっていたのだけど
682デフォルトの名無しさん (ワッチョイ df1d-NImZ)
2026/06/23(火) 09:57:36.81ID:3vnnehfM0 >>681
C言語愛好家に長く親しまれているFILE*の実体FILE構造体の仕様は、長く親しまれている日清カップヌードルの四角い茶色い具材「謎肉」同様、仕様が定まっていない
C言語愛好家に長く親しまれているFILE*の実体FILE構造体の仕様は、長く親しまれている日清カップヌードルの四角い茶色い具材「謎肉」同様、仕様が定まっていない
683はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5ff8-RTsw)
2026/06/23(火) 10:26:39.25ID:LGV/0++40 >>681
何か前提を勘違いしてると思う。
ラムダ式の値の型はクロージャ型。
static を付けてもクロージャ型であることは変わらない。
関数ポインタとの関係とか呼び出しのメカニズムを説明しようとすると長くなるんでどこがわかってないのかがわからないと説明しづらいが ABI の通りに解釈すればラムダ式に static を付けたら this の受け渡しをしなくなるはずではある。
手元に MSVC を入れてないから確かめてないけど。
何か前提を勘違いしてると思う。
ラムダ式の値の型はクロージャ型。
static を付けてもクロージャ型であることは変わらない。
関数ポインタとの関係とか呼び出しのメカニズムを説明しようとすると長くなるんでどこがわかってないのかがわからないと説明しづらいが ABI の通りに解釈すればラムダ式に static を付けたら this の受け渡しをしなくなるはずではある。
手元に MSVC を入れてないから確かめてないけど。
684デフォルトの名無しさん (ワッチョイ 7fc3-NfMx)
2026/06/23(火) 10:28:14.76ID:Jbh1W4+v0 >>681
自分もVC使いなので、興味があったのでAIにぶん投げたてみた AIの答えは、「期待できる」だった
なので、実際のコードで、(成功を期待して)/Fa だったかで汗生成して、みてみるといいかと
自分もVC使いなので、興味があったのでAIにぶん投げたてみた AIの答えは、「期待できる」だった
なので、実際のコードで、(成功を期待して)/Fa だったかで汗生成して、みてみるといいかと
685デフォルトの名無しさん (ワッチョイ 7fc3-NfMx)
2026/06/23(火) 10:29:57.12ID:Jbh1W4+v0 うおっえらい御仁とかぶったw
686デフォルトの名無しさん (JP 0Hf3-NImZ)
2026/06/23(火) 10:57:17.46ID:0E3vdVUZH >>683
MSVCはlambdaの受け取り先がポインタであれば自動で呼び出し規約まで揃えたものを返してくれる
勿論その場合はキャプチャは許されないけど、許されないにも関わらず上述した通りまるでキャプチャ変数があるかのような非効率なアセンブラが生成される
これが大変気に食わないけどWin32のコールバック関数なんかを一々他に定義するのが面倒だから即値でlambdaを与える書き方を多用してしまってるので改善されてるならアプデしようかなーと思った所存
MSVCはlambdaの受け取り先がポインタであれば自動で呼び出し規約まで揃えたものを返してくれる
勿論その場合はキャプチャは許されないけど、許されないにも関わらず上述した通りまるでキャプチャ変数があるかのような非効率なアセンブラが生成される
これが大変気に食わないけどWin32のコールバック関数なんかを一々他に定義するのが面倒だから即値でlambdaを与える書き方を多用してしまってるので改善されてるならアプデしようかなーと思った所存
687デフォルトの名無しさん (JP 0Hf3-NImZ)
2026/06/23(火) 10:59:31.25ID:0E3vdVUZH >>684
実装動機的にもパフォーマンス面で有利になる事を期待したものだしさすがにそうなってる可能性が高いよね
これ以外にはC++23にする意義があまり見つからないから改善されてなかったらスキップしようとは思ってたけど
実装動機的にもパフォーマンス面で有利になる事を期待したものだしさすがにそうなってる可能性が高いよね
これ以外にはC++23にする意義があまり見つからないから改善されてなかったらスキップしようとは思ってたけど
688はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5ff8-RTsw)
2026/06/23(火) 11:08:43.41ID:LGV/0++40 >>686
クロージャから関数ポインタへは (キャプチャしていないときに限り) 暗黙の型変換が許されていて変換した後なら関数ポインタそのものだから関数ポインタの ABI を当てはめられるはずなのだが……
そうじゃないとしたらちょっとおかしいな。
クロージャから関数ポインタへは (キャプチャしていないときに限り) 暗黙の型変換が許されていて変換した後なら関数ポインタそのものだから関数ポインタの ABI を当てはめられるはずなのだが……
そうじゃないとしたらちょっとおかしいな。
689デフォルトの名無しさん (ワッチョイ 5f73-AxUA)
2026/06/23(火) 11:17:21.20ID:mbMp8Ojs0 ABIとかじゃなくて出力コードの質の話でしょ。
681が最初から例になるソースとアセンブリを挙げて話せば誤解もなかっただろうに。
681が最初から例になるソースとアセンブリを挙げて話せば誤解もなかっただろうに。
690デフォルトの名無しさん (ワッチョイ 7fc3-NfMx)
2026/06/23(火) 11:20:21.37ID:Jbh1W4+v0 貼っておくか。「何の話?」と思ってる人用 https://share.google/aimode/903Xp9QU4rDacx3jt
691デフォルトの名無しさん (ブーイモ MM9f-XTBv)
2026/06/23(火) 15:38:31.09ID:9qt1NNSjM692デフォルトの名無しさん (ワッチョイ 7fc3-NfMx)
2026/06/23(火) 16:42:16.54ID:Jbh1W4+v0 はっきりいって串だな
693デフォルトの名無しさん (ワッチョイ dfa1-uirr)
2026/06/23(火) 17:20:00.25ID:rS1nF0q50 🍡
694デフォルトの名無しさん (ワッチョイ ff06-edzr)
2026/06/23(火) 18:54:10.10ID:9yxUF3mx0 単項+にこんな用途があったなんて、、、草(あるいは串)
695はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dfdd-GA92)
2026/06/23(火) 21:24:42.45ID:H3iLDTPz0 以前に説明したような記憶があると思って検索したら前々スレだった。
https://itest.5ch.io/mevius/test/read.cgi/tech/1698705458/754
https://itest.5ch.io/mevius/test/read.cgi/tech/1698705458/754
696デフォルトの名無しさん (アウアウキー Sa53-QZS2)
2026/06/23(火) 22:36:32.76ID:mAcX9abna +ネギ、ウズラ卵、鶏皮;
697デフォルトの名無しさん (ワッチョイ df1d-NImZ)
2026/06/24(水) 00:01:09.57ID:A3+Amlrg0 単純なgrep検索でC++ラムダ式の利用箇所を見つけ出すのは大変
その点、バカ丁寧にlambdaと書かせて読み手の注意を引くPythoラムダ式は可読性が高い
その点、バカ丁寧にlambdaと書かせて読み手の注意を引くPythoラムダ式は可読性が高い
698デフォルトの名無しさん (ワッチョイ ff06-edzr)
2026/06/24(水) 00:22:32.16ID:biqyVSqi0699デフォルトの名無しさん (ササクッテロラ Spb3-9UmW)
2026/06/24(水) 10:27:17.59ID:st+X5yaVp >>685
そういうのやめろって
そういうのやめろって
700デフォルトの名無しさん (ワッチョイ df1d-NImZ)
2026/06/25(木) 20:26:38.76ID:tbUgXolQ0 絵文字にはだんご🍡(U+1F361)とおでん🍢(U+1F362)が用意されているが焼き鳥はない
701デフォルトの名無しさん (スフッ Sd9f-5Dde)
2026/06/27(土) 14:47:53.43ID:V79csoB6d test 🀐
702デフォルトの名無しさん (ワッチョイ df99-NImZ)
2026/06/27(土) 20:13:31.09ID:8PKUXZUl0 上の単項+演算子は
本当は単項&演算子をオーバーロードしたかったのにできなくて血涙
本当は単項&演算子をオーバーロードしたかったのにできなくて血涙
703デフォルトの名無しさん (ワッチョイ df99-NImZ)
2026/06/27(土) 21:30:40.51ID:8PKUXZUl0 質問なのですが
クラスの定義の中の定数定義っていつからdoubleとかも定義できるようになったんじゃわ?
今やったら
class Foo {
static constexpr double DEG2RAD = M_PI / 180.0;
};
が通ってビビった
まさかC++で!
よりにもよってストロストラウップがenumあるんだからクラス内のstatic const int とかいらんわ
と抵抗したあのC++で!!
こんなコードが書けるようになろうとわ!!!
クラスの定義の中の定数定義っていつからdoubleとかも定義できるようになったんじゃわ?
今やったら
class Foo {
static constexpr double DEG2RAD = M_PI / 180.0;
};
が通ってビビった
まさかC++で!
よりにもよってストロストラウップがenumあるんだからクラス内のstatic const int とかいらんわ
と抵抗したあのC++で!!
こんなコードが書けるようになろうとわ!!!
704デフォルトの名無しさん (ワッチョイ 5f32-phNh)
2026/06/27(土) 21:51:23.62ID:R8+7NcOR0 constexprならそりゃあ
705デフォルトの名無しさん (ワッチョイ ff06-edzr)
2026/06/27(土) 22:58:05.10ID:8D3lxavl0 >>703
C++11学習中ですが普通に出てきます
constexprは関数にも指定可能で、こちらは基本的にコンパイル時解決されるものの、それができないコールは通常関数として扱われるそうで。恩恵は受けられそうですが名前に対する挙動が難解!
C++11学習中ですが普通に出てきます
constexprは関数にも指定可能で、こちらは基本的にコンパイル時解決されるものの、それができないコールは通常関数として扱われるそうで。恩恵は受けられそうですが名前に対する挙動が難解!
706デフォルトの名無しさん (ワッチョイ ff06-edzr)
2026/06/27(土) 23:06:41.66ID:8D3lxavl0 >>705 cpprefjpで確認したら大間違いだった
「…左辺が constexpr 修飾された変数であれば、右辺の関数はコンパイル時に呼び出される。そうでなければ、関数は実行時に呼び出される…」
「…左辺が constexpr 修飾された変数であれば、右辺の関数はコンパイル時に呼び出される。そうでなければ、関数は実行時に呼び出される…」
707デフォルトの名無しさん (ワッチョイ a999-O8ko)
2026/06/28(日) 00:32:35.37ID:npu3815+0 しーぷらすぷらすじゅういちぐらいのじぶんはクラスにていすうめんばーをもたせようとおもったらconstつきでせんげんしてこんすとらくたーのめんばーしょきかりすとでしょきかするほうほうしかなかったがれいがいてきにintかただけはenumていすうとしてていぎするかstatic const int BAR = 123; みたいなかきかたができたがいつのまにかint かたいがいでもかけるようになっていておどろきというはなし、
708デフォルトの名無しさん (ワッチョイ a999-O8ko)
2026/06/28(日) 00:34:19.80ID:npu3815+0 ていせいorz、
△:おどろき
○:おどろきもものき
△:おどろき
○:おどろきもものき
709デフォルトの名無しさん (ワッチョイ a999-O8ko)
2026/06/28(日) 00:45:03.70ID:npu3815+0 すまんていすうめんばーをもたせたいのではなくてくらすていぎないでていすうとていぎしたいというはなしやったしかしこれもしーぷらすぷらすじゅういちぐらいのじぶんはintかたにかぎってはstatic const int BAR = 123; みたいなかきかたができたがそれいがいのかたたとえばdoubleかたとかではstatic const double DEG2RAD = 3.0/180; みたいなかきかたはできずstatic const double DBG2RAD; とせんげんしておいて .cpp ふぁいるのほうに double Foo::DBG2RAD = 3.0/180.0; みたいにかかねばらなんかったんじゃわここでFooはくらすのなまえ
710はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cdf8-fDVW)
2026/06/28(日) 08:08:00.32ID:NngG2nWn0 >>703
static や constexpr は脇に置いて C++11 以降では普通のデータメンバの初期化子をクラス定義時に書ける。
class Foo {
double DEG2RAD = 3.1415926 / 180.0;
};
これを許してしまったら constexpr は駄目とは言えないだろ。
static や constexpr は脇に置いて C++11 以降では普通のデータメンバの初期化子をクラス定義時に書ける。
class Foo {
double DEG2RAD = 3.1415926 / 180.0;
};
これを許してしまったら constexpr は駄目とは言えないだろ。
レスを投稿する
ニュース
- 【サッカーW杯】1次リーグ敗退に韓国大統領が異例の失望表明…「無能な指揮官選べば結果は火を見るより明らか」★3 [王子★]
- 「愛子さま皇位継承あり得ず」 中曽根弘文氏、結婚する人ない ★2 [ぐれ★]
- 【岐阜】ペダル踏み間違え…ドラッグストアに車が突っ込み49歳女性が店の前で巻き込まれ死亡 56歳公務員の女性が運転 可児市 [ぐれ★]
- 女優・松本まりか「壊されたくない物があるなら、罰で強制でなく…大切に思ってもらえるように行動すべき」作家の国旗に関する投稿に ★2 [少考さん★]
- 【五輪】IOC「私たちは再び日本で冬季五輪を行いたいと考えている」 [ニーニーφ★]
- 長友が本気のブラジル撃破を約束「忘れられない一日にさせます」報道陣には「(帰りの)飛行機とっているんだったら全部キャンセルで」 [ゴアマガラ★]
- 【高市悲報】芸能人「統一教会に救われた人も居る」これなんだったの・・・😰 [616817505]
- 【高市朗報】らんま、自分の精子と卵子で受精(自家受精)して赤ちゃんを作れることが判明。北海道大学の研究 [663382246]
- オートバイのモトGP、日本人22年ぶりの優勝 [256556981]
- 🏡立てろカス共😡
- 人生において本当に価値のあるものって何? [904880432]
- ネットのマナーが悪い国ランキング、あの国が1位wwwwwwwwxw