C++相談室 part152

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2020/07/12(日) 13:42:20.13ID:TX1mpKr6
https://mevius.5ch.net/test/read.cgi/tech/1589424805/
876デフォルトの名無しさん
垢版 |
2020/10/06(火) 05:41:08.44ID:bkxQK63r
c++界隈ってガイジしかいねーのかね…
2020/10/06(火) 06:34:58.64ID:Q2zsUWrb
こんなスレ見て界隈を語るとかw
2020/10/06(火) 06:49:52.98ID:2iI+f89O
付いていけない不適任者の恨み節うるせー
2020/10/06(火) 08:02:53.12ID:/wGSs2GX
>>867
それ、デマらしいぞ。
2020/10/06(火) 08:42:39.29ID:zdPPSeez
>>875
新しい機能を (必要だと考えるまで) 使わないでいい自由があるということを
私は言ってるのにその返しはなんかおかしくない?
2020/10/06(火) 09:36:25.29ID:aU8CxIwJ
>>880
>新しい機能を (必要だと考えるまで) 使わないでいい自由がある
全部publicなのが問題
2020/10/06(火) 10:08:20.97ID:aU8CxIwJ
んまー低水準開発だと見えてほしくないものが見えてしまっている
レイヤーAとBの初期化が終わらなければレイヤーCの機能を呼んではいけないのに、
という状況は言語によらず普通に発生するから程度なのかもしれんが
C++はその手の罠が大杉問題、
2020/10/06(火) 10:09:47.48ID:aU8CxIwJ
最新のC++規格について行けている(キリ
と自称されている方々は、
単にOSが起動完了した状態での使い方に習熟しているだけではないのかどうなのか、
2020/10/06(火) 10:24:36.80ID:2iI+f89O
くだらねえ言いがかりだな
まあそんなことしか言うことねえのはわかるぜ
最大級に軽蔑する
885デフォルトの名無しさん
垢版 |
2020/10/06(火) 10:52:17.76ID:WjG83btQ
このスレ観てたら C#++ とか産まれそう

と思った
2020/10/06(火) 11:25:21.40ID:/wGSs2GX
>>881
プロジェクトのコーティング規約に従えよ。
2020/10/06(火) 11:53:18.32ID:aU8CxIwJ
プロジェクトのコーティング規約をしっかり定めさえすれば
空も飛べるはず、
2020/10/06(火) 11:55:12.28ID:c3+O5H5/
>>870
まあ、配列が TYPE a[N][M]; ではなく、
vector<vector<TYPE>> a; // ???
が推奨された時点でもう、おかしいから。
しかも、このスレにはvectorと略さずに必ずstd::vectorと書け、とまで言う人までいる。
2020/10/06(火) 11:58:38.89ID:E8GhSeFr
vector< vector <TYPE> > a;
はそもそも
TYPE a[N][M];
じゃなくて
TYPE *a[N];
だからなー
2020/10/06(火) 11:59:48.46ID:aU8CxIwJ
>>888
プロジェクトのコーディング規約に従えよ;;
2020/10/06(火) 12:01:19.58ID:c3+O5H5/
iteratorの書き方も煩雑すぎ、長すぎ。
linked listの場合に効率悪すぎ。
ポインタも生ポインタ費推奨で uniqure_ptr, shared_ptrなどが推奨されているのも
既に言語として破綻してる。
ポインタはCの「命」なのに、unique_ptrなどと書くのは長すぎるので。
アメリカの学生は9割がポインタが理解できないので、
多数決で言語仕様を決定していくと、ポインタを徹底的に排除してしまう。
角度の Radian 法が理解できない人が、Degreeを推奨し続けたりしているようなもの。
AndroidのSDKは、それになっている。
馬鹿じゃないかと思う。
2020/10/06(火) 12:03:14.67ID:aU8CxIwJ
>>891
std::unique_ptr便利やん?
機能を使えるところまで持っていくのが面倒なだけで、
2020/10/06(火) 12:06:36.75ID:c3+O5H5/
頭が悪い人は、ポインタの表記の優先順位を頭の中で「ほどけない」ので、
優先順位が馬鹿でも分かる
unique_ptr<unique_ptr<T>> p;
という書き方の方が分かり易く感じるのだと思う。
頭の良い人にとっては、ただ書くのが長くなっただけに過ぎないのに。
2020/10/06(火) 12:08:43.10ID:n1AkD2sr
>>893
あんたの頭が悪いのは良くわかった
2020/10/06(火) 12:09:23.24ID:c3+O5H5/
>>892
便利でも書くのが長くなった時点で駄目。
頭の悪い人は、長くても考える量が少なくなる方を好むから、
9割がベギナー止まりであるところのプログラミングの世界で多数決で
良し悪しを決めると長くても考える量が少なくなる方が人気を呼ぶことになる。
しかし、頭の良い人は頭のAIがすぐれているので、考えなくても瞬時に分かって
しまうので、読み解いたり自分で書くときに全く時間が掛からないので、
短くかけるほうが好まれる。
2020/10/06(火) 12:09:50.61ID:c3+O5H5/
>>894
違うな。
実世界では天才と呼ばれているから。
2020/10/06(火) 12:12:26.93ID:CFpJLx94
>>895
長くなったことの問題はわかるけど
じゃあc++はどうすればよかったか代案だせんの?
2020/10/06(火) 12:15:41.91ID:c3+O5H5/
>>897
出せるが、スマンがここには書かない。
2020/10/06(火) 12:17:57.70ID:CFpJLx94
はい雑魚
2020/10/06(火) 12:18:47.45ID:aU8CxIwJ
余は真に驚くべき代案を思いついたが
匿名掲示板に書くには余白が狭すぎる、
2020/10/06(火) 12:35:34.59ID:6yK3bagl
>>896
ネットを除いたお前さんの実世界って、話す相手が自分自身かお母さんくらいしかいないんじゃないの?
2020/10/06(火) 12:38:51.95ID:6yK3bagl
>>891
生ポインタは言語仕様上、現在でも有効だし、合理的理由があればナマポを使うことを否定されるわけでもないのに、何が不満なのか分からんな。
2020/10/06(火) 12:44:06.33ID:CI7Aw4lV
>>882
グローバル変数やスタティック変数のコンストラクタに依存姓のある処理を記述して失敗しているのを目撃することはよくある。
でもそれはロード時に自動実行する機能のある言語では同様に起こりうることだと思うよ。

だいたいシングルトン多用するやつの仕業。
使うと恥ずかしくて死んでしまうようなパターン名ならよかったのに
2020/10/06(火) 12:56:09.29ID:2iI+f89O
std::vector ←イキってるだけのアホ
::std::vector ←こう書かなきゃ意味ねえだろ
2020/10/06(火) 13:04:06.67ID:c3+O5H5/
>>901
なんという貧弱なイマジネーション。
2020/10/06(火) 14:46:47.18ID:QUhM0XrN
無益な話題ほど盛り上がるな
2020/10/06(火) 18:37:05.86ID:Yd4gYmDo
メモ帳でコード書いてんの?
普通のエディタは補完が効くよ
2020/10/06(火) 18:51:39.39ID:44oBE2pA
>>896
そういうのならその証拠をみせてください
あなたのものの言い方は、どちらかというと反対側の人の言い方ですね
2020/10/06(火) 19:20:46.29ID:c3+O5H5/
この板で一番馬鹿っぽいのに自分は賢いと思っているのが QZだ。
恐らく女。
女の中では賢いのかもしれないが、男の中では普通。
2020/10/06(火) 20:13:08.46ID:k5Zg1BNu
>>903
アドレスサニタイザー入れたらシンプルトン関連で例外だらけになった
やっぱ未定義動作なのね
2020/10/06(火) 20:34:25.94ID:44oBE2pA
>>909
>恐らく女。

面白い意見ですね、どのような推論からこの結論が導き出されたのか興味があります

>>896
>実世界では天才と呼ばれているから。

というのなら、その証拠を投稿内容で証明してみせてほしいですよね
>>909 を見る限り、私には馬鹿の同類項にしかみえないですね……
2020/10/07(水) 01:57:07.30ID:OVJx2Nts
全くオブジェクト思考できない言語w
2020/10/07(水) 03:07:05.72ID:Bq/qs/XJ
C++で食ってるフリーランスいる?

いくつでどういう技能を持ってていくら貰ってるか教えてくれよ
2020/10/07(水) 03:10:26.00ID:5YLES8U8
>>911
>>恐らく女。
>面白い意見ですね、どのような推論からこの結論が導き出されたのか興味があります
普段から、馬鹿な応答が多かったし、
「自分でコンテナクラス(リストなど)を作れるから天才」
だとか、男だったら基本中の基本の出来て当たり前の事が出来るだけで天才と言っている
辺り、如何に周りのレベルが低いかが分かったから。
915デフォルトの名無しさん
垢版 |
2020/10/07(水) 09:58:24.09ID:Ht8WKaAR
>>913
教師なら有り得るなω
916デフォルトの名無しさん
垢版 |
2020/10/08(木) 11:06:31.29ID:2a0CIcHX
>>904
> ::std::vector ←こう書かなきゃ意味ねえだろ
えーキモいからやだ
2020/10/08(木) 11:23:23.22ID:xCgN3gCo
:: が増えると tanasinn な感じになるな。
2020/10/08(木) 14:32:44.44ID:FCbCRYtX
>>916
絶対パスのつもりらしいが絶対パスになってねえだろ
相対パスならusingしろ
絶対パスの面倒臭さと相対パスの曖昧さのデメリット両取りする間抜けな書き方すんじゃねえって話
2020/10/08(木) 14:53:12.38ID:k2d5Ic0g
stdが被る可能性はないに等しいのでセーフという合理性
2020/10/08(木) 15:16:36.24ID:FCbCRYtX
あのなあ、ここ技術板だぜ?
合理性っておかしいだろ
2020/10/08(木) 15:23:06.13ID:3RUxQQIS
>>920
技術板だからこそ、教条主義的な完全性より現実的な条件での合理的な判断があってしかるべきだと思うぞ。
2020/10/08(木) 15:43:13.43ID:xCgN3gCo
プログラミングはサイエンスの部分もなくはないがエンジニアリング (またはテクノロジ) 寄りの話だろ。
一部の隙もない論理を構築したいわけじゃなくて問題を解決したいんだ。
で、 std のかわりに ::std と書くことで解決される問題が
このスレの誰かの前に出現したことがただの一度でもあると思うのかね?

トップレベル以外の名前空間に std が現れるのは仕様で禁止されていないっぽいから、
そりゃあ可能性だけで言えば絶対にないとは言えんだろうが、
現実にはこの二者がいたらどちらがよりクソだと思う?

・ 変なところに std という名前空間を作るやつ
・ ::std と書かずに std と書くやつ

前者があまりにもクソすぎるのでそういうやつはおらんだろということで
だいたい上手く運用できておるのや。
2020/10/08(木) 15:45:51.60ID:FCbCRYtX
自己弁護にしか聞こえねえな
"今までそうやってきたから正しいことにしたい"
批判的な相手がそれで納得するとでも思っているのか
924デフォルトの名無しさん
垢版 |
2020/10/08(木) 15:48:46.09ID:bMUfOck+
#define std ::std
2020/10/08(木) 15:51:15.44ID:FCbCRYtX
いっそstdをキーワードにすればって話ならまだわかるぜ
おまえらの論法で言うところの関数名やオブジェクト名をstdにはしねえんだから
下線で始まらないoperator""をstd以外には作らせないこともできるね
2020/10/08(木) 16:12:32.18ID:xCgN3gCo
>>923
そうだよ。
std という名前を作らないか ::std を使うかのどちらかが達成されていればよく、
std という名前を作らないという習慣で今までやってきるのをあえて乱したいのはなんで?
っていう話だよ。
2020/10/08(木) 16:16:24.11ID:2a0CIcHX
::stdってしてたら逆に何こいつイキってんの?って思うけどなw
2020/10/08(木) 16:18:31.50ID:xCgN3gCo
>>923
どちらかが正しいと言ってるんじゃなくて、一貫させることが正しいと言ってるんだよ。
移行コストを支払って得られる何かがあるなら検討はするよ。
何かいいことあるの?
2020/10/08(木) 16:25:12.01ID:OzyhYKZT
>>923
世の中には話の通じない相手がいるのは分かってるし、そんな相手を納得させることに無駄なエネルギーを費やす価値はない。お前さんが納得しなくも他の誰も困らないからどうでもいい。
というのも合理性だなw
2020/10/08(木) 16:30:41.96ID:FCbCRYtX
「合理性」を咎められたのが余程効いたようだな
意味をここでだけ変更したくてそんなに必死になるのは
そういう手合いはstdの意味をここだけ変更もしかねねえな
2020/10/08(木) 16:32:53.69ID:FCbCRYtX
>>928
どちらが正しいかって論点では分が悪いもんなw
2020/10/08(木) 16:36:13.85ID:FCbCRYtX
> ID:2a0CIcHX

感情論ばっかりだな
2020/10/08(木) 16:41:10.44ID:kXp3o/p+
コードヘタクソなヤツは変なところ拘る
2020/10/08(木) 16:41:16.92ID:k2d5Ic0g
::stdって自己満でしかない
リターンがない
特に困ってない問題を解決したところで人生の無駄遣い
そこがんばったところでアホなマクロがひとつ混ざれば破綻する可能性はあるわけで
ある程度の良識や常識に依存するのは仕方ない
可能性のスケール感を考えられるかどうかとも言える
まぁやめろとは言ってないんだから好きにすればいいじゃん、ひとりで書いてる限りは
2020/10/08(木) 16:59:59.98ID:FCbCRYtX
実害が出る前に予防的措置ということはあるぞ

それから俺は既存のコードを書き直せなんて言ってない
そんなのはてめーらの勝手だ

アカデミックな目線でおかしいと思うところを批判しているだけだ
代替案も出してる(採用されるか否かはともかく)
2020/10/08(木) 17:01:17.10ID:FCbCRYtX
批判と非難を一緒にしないでくれな
937デフォルトの名無しさん
垢版 |
2020/10/08(木) 17:10:34.05ID:bhEfUzRp
初心者から抜けられない・・・
2020/10/08(木) 18:12:40.88ID:xCgN3gCo
>>935
もっと広範囲に std という名前を禁止する提案はもう出てるよ。
言語仕様として良くなかったというのは言わなくても皆がわかってるので、
そんなに強くいわなくてもいいよ。
C++ の仕様がグダグダなんていうのは今更のことじゃん。

その上で、 std という名前を定義しないという運用上の習慣は確立してるって話。
2020/10/08(木) 19:16:21.52ID:Bj+fAE8H
そもそもstd名前空間(::stdじゃなくて)の拡張は未定義じゃね?
(17.6.4.2.1 Namespace std)

何のためにstd名前空間を定義するの?
2020/10/08(木) 19:50:52.17ID:2a0CIcHX
茨木が
いばらき
なのか
いばらぎ
なのか
くらいどうでもいい
2020/10/08(木) 19:51:57.26ID:N89hoMl4
例えばstd::swapで自分のクラスの交換を定義したい、ってケースが考えられる。
2020/10/08(木) 20:13:18.19ID:xCgN3gCo
>>939
その std は ::std のことやで。
その std を拡張することは禁止されているが、
別の名前空間の下に std という名前空間を作るのは禁止されていない。

using namespace で std を含む名前空間を取り込んだ上だと ::std でなく std という表現をすると
標準ライブラリの std でないものを指す可能性があるというのが今の話題。

でも禁止されてないからといって std という名前を付けるやつはおらんから気にするだけあほらしいでというのが反論。
2020/10/08(木) 20:13:56.08ID:3LpdeaMK
>>935が言ってる採用されるか、てのは「相手が」だと思うが
C++標準の話ではないやろ
2020/10/08(木) 20:41:41.67ID:xCgN3gCo
>>941
std (::std) に定義を追加することは禁じられているが特殊化を追加することは禁じられていなかった。
しかし C++20 からはこれも禁止になる。
カスタマイズポイントという仕組みが用意されたのでこれを使うのが (今後は) 望ましい。
945sage
垢版 |
2020/10/08(木) 20:42:23.39ID:5vNQ47uu
>>942
C++標準にnamespace std を ::stdとする定義ってあったっけ?
『standard libraryの名前xは ::std::xとして定義しろ(20.5.1.1.3)』
というのはあるけど、namespace std = ::std という定義じゃないよね?

最近は標準を読んでないから見落としあるかもしれんが、
ざっと見た範囲では無さそうだった。
2020/10/08(木) 22:31:10.36ID:xCgN3gCo
>>945
そう。
using namespace std; の std が ::std でないものを指す可能性があるが、
拡張を禁じている std というのは ::std のことなので、
大元の議論は ::std を拡張するなんていう話はしてないという指摘をしてる。
2020/10/09(金) 00:24:46.45ID:Sv65jxff
ID:FCbCRYtX さんはグローバル以外で自分のコードから見えるスコープに誰かが
std という名前を宣言している可能性も考慮して万全の策を取っているんですね。すごいなぁ。
ということは当然、誰かが #define std ... している可能性も考慮して
::std を使う行の前には必ず #undef std も書くのでしょうね。すごいなぁ。
2020/10/09(金) 03:44:42.22ID:eAzl4WVQ
「::」って打つのは超々々多大なコストですもんね。すごいですよね。
949sage
垢版 |
2020/10/09(金) 03:59:02.26ID:eAfWXkzh
>>946
16.5.4.2.1 Namespace std
Unless otherwise specified, the behavior of a program is undefined if it adds declarations or definitions
to namespace std or to a namespace within namespace std.
で、::stdの規定があるのは
16.5.1.1 Library contents
Whenever a name x defined in the standard library is mentioned, the name x is assumed to be fully qualified
as ::std::x, unless explicitly described otherwise. For example, if the Effects: element for library function F
is described as calling library function G, the function ::std::G is meant.
だけだから、拡張を禁じているのが::stdだけというのは言いすぎじゃね?

標準化の経過を追っているわけじゃないからこの解釈が妥当か知らんが。
2020/10/09(金) 07:35:33.10ID:TjErAM+z
>>942
反論なら論で来いよ
あほららしいなんて感情ではなく
2020/10/09(金) 07:36:25.15ID:TjErAM+z
>>943
「相手が」stdをキーワードにできると思うのか?
2020/10/09(金) 07:48:48.53ID:NEyoYsah
>>950
>>939でほぼ確定だろ。
namespace std == ::std
なら話は別だが、それは無さそうだし。
2020/10/09(金) 08:05:41.52ID:TjErAM+z
>>952
俺だけでなく>>946もそうは見ていないようだぞ
C++14の時点では考え落とされているから言及がないだけだろ
それとも、どこかに議論された形跡でもあったのか?
2020/10/09(金) 08:30:04.27ID:NEyoYsah
>>953
反論なら論で来いよ。
標準で議論されていないなら標準の文言が全てだろ。
>>949の通り、標準の文言だと明らかに
namespace std != ::std
として扱われているんだから、反論するならそれを否定する
namespace std == ::std
の証拠を持ってこいや。
2020/10/09(金) 09:46:43.60ID:TjErAM+z
>>954
標準ライブラリのxは::std::xだと書いてあるやん
2020/10/09(金) 09:52:04.08ID:TjErAM+z
pathは::std::pathじゃないけどね
2020/10/09(金) 12:06:02.44ID:NEyoYsah
>>955
16.5.4.2.1で拡張を禁止されているのはstdと名前の付いた名前空間で、::stdに限定しないだろ。
と言っているんだが。

反論するなら、標準で
namespace std==::std
としている定義を持ってきてくれ。
2020/10/09(金) 12:19:21.22ID:TjErAM+z
話が噛み合ってないな
考え落としで言及がないだけだろと言ったはず
あくまで推測だけどね、考え落としていないとわかるものがあるなら拝見したい
2020/10/09(金) 12:48:04.11ID:NEyoYsah
>>958
標準化委員じゃないんだから、議論したかどうかなんてクソどうでもいい。
「::stdじゃないと意味ない」とかいう話をしているんだから、まずは標準でどうなっているかだろ。

標準で「namespace stdを拡張すると未定義」となっているなら、::stdに限らず未定義としか言えんわ。
反証するなら
namespace std==::std
とする証拠を出せよ。
2020/10/09(金) 13:15:13.68ID:TjErAM+z
958と全く同じことなんで二度は言わん
2020/10/09(金) 13:15:55.31ID:vxTRmbpR
話の流れとはずれますが、C++の仕様の確認のための質問をします。
namespace AAA {
 void func() {
  std::vector<TYPE> v;
 }
}
と書いた場合、コンパイラはstdをAAAの中に最初に探し、AAAの中に見つからなければ
「グローバルな名前空間」から探すので、AAAの中にstdが見つからない場合でも、
::std と書かなくてもエラーにはならないんですよね?
2020/10/09(金) 13:17:08.39ID:vI140Nir
>>959
いやいや、自然言語で書かれている以上は文脈・意図を全く考慮せずに読み解くことは出来んよ。
そんなこと言ったら add という言葉の意味が仕様書内で定義されてるか?
とかいう話にもなりかねんわけで。

仕様書という性質上、なるべく解釈の幅がないように書くべきではあるが、
不確かな場合はどうしたってあるし、経緯に遡って解釈することだってあるよ。
2020/10/09(金) 13:24:30.32ID:vxTRmbpR
>>961
[捕捉]
ファイルのパス名の場合、/std と書くとルートから探し、stdと書くと
カレントディレクトリから探すだけでルートは探しませんが、
C++の場合、stdと書いても最初は「カレント名前空間」から探し、
見つからなければ、見つかるまで「親の名前空間」を連鎖的に探して
行くのですよね。
この違いは気を付けなければなりません。パス名との類推から、
ややもすればうっかり混同してしまいそうです。
964デフォルトの名無しさん
垢版 |
2020/10/09(金) 17:42:56.92ID:8wCv3rMc
コードを書け
社会貢献しろ
2020/10/09(金) 17:47:40.59ID:m4egzLq0
じゃあ見本でお前のgithubさらしてくれる?
966デフォルトの名無しさん
垢版 |
2020/10/09(金) 18:16:22.78ID:8wCv3rMc
>>965
お前はまず働け!
2020/10/09(金) 18:17:41.17ID:m4egzLq0
はい雑魚
2020/10/09(金) 19:29:37.80ID:mnBkuaJE
このスレは餃子以外はまともな書きこみねえなほんと
2020/10/09(金) 19:32:46.57ID:NEyoYsah
>>962
今回の件と関係するのかね?
極端な例で反論したつもりになられても議論できんわ。

文脈の話をするならば、標準の記載では入れ子になったnamespace Nもnamespace N表記なんだから、特に記載の無い限り入れ子になったnamespace stdもnamespace std表記だろ。

namespace stdを
::stdに限定するなんて、標準の文脈からすればなおさらありえん。
2020/10/09(金) 19:47:52.64ID:fkeFOvGK
UBIとかEAのような大規模ゲームってどんなコードで作られてるの?
きっとmain関数の中にスレッドループがあったりはしないんだろうな
タイトル画面ですら複雑な処理してそう
2020/10/09(金) 20:16:53.59ID:m4egzLq0
メインループは回すよ
回さなかったら終了するじゃん
まぁspawnしてjoin待ち見たいなのもよくあるけど
2020/10/10(土) 06:22:29.70ID:W6O5r79w
test
2020/10/10(土) 06:32:13.62ID:tjeCnATK
leave
ret
2020/10/10(土) 07:23:12.80ID:gvSXcuMi
>>968
餃子がまとも?ヤベェな。。
975デフォルトの名無しさん
垢版 |
2020/10/10(土) 09:08:57.50ID:g6Q5c5Tz
>>927
そんなコード見たら虐めちゃうけどな
なんかイラッとするわ
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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