次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part140
レス数が1000を超えています。これ以上書き込みはできません。
2019/01/13(日) 05:56:22.70ID:9RrR7Arz
2019/01/13(日) 12:13:17.13ID:RILPaCDm
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
-------------------------------------------------
テンプラ終わり(・∀・)
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
-------------------------------------------------
テンプラ終わり(・∀・)
3デフォルトの名無しさん
2019/01/13(日) 12:28:28.53ID:tXzbQf9x キモ
2019/01/13(日) 14:07:10.45ID:jnu8drBp
>>2
void氏ね
void氏ね
5デフォルトの名無しさん
2019/01/13(日) 21:50:49.17ID:ncBKuw+D C++の公式テーマソングが無いのはおかしいと思います。
2019/01/14(月) 00:51:27.29ID:zP0SEG0M
ぜひ標準化委員会に提案してください
7デフォルトの名無しさん
2019/01/14(月) 03:14:45.04ID:H1tgEUC1 std::end()は組み込み配列に使えるように、文字列定数にも使えますか?
2019/01/14(月) 03:24:48.07ID:ybeYuaGe
9デフォルトの名無しさん
2019/01/14(月) 03:28:00.13ID:H1tgEUC1 >>8
ありがとうございマッスル。
ありがとうございマッスル。
2019/01/14(月) 08:50:03.60ID:0VR066eS
c++でインターフェースを作るのは難しいのですか
opengl使いたいのですがC++だとインターフェースが難しいらしいので、C#とopentkでやろうかとおもてます
opengl使いたいのですがC++だとインターフェースが難しいらしいので、C#とopentkでやろうかとおもてます
2019/01/14(月) 09:40:50.14ID:0dIC6S3t
インターフェースってデータメンバーがなくてノーマルなメンバ関数が全部純粋仮想関数なクラスのこと?
誰が何を難しいって言ったか知らないけど簡単だよ
誰が何を難しいって言ったか知らないけど簡単だよ
2019/01/14(月) 10:08:56.31ID:0VR066eS
guiのことです
ボタン等があるソフトが作りたいのですが、、、
ボタン等があるソフトが作りたいのですが、、、
13デフォルトの名無しさん
2019/01/14(月) 12:36:11.68ID:wyHGUhfa 画面の外にGUI置くならC#の方が作りやすいと思うが、openglのレンダー画面内だとネイティブなopengl のコード書かないと無理なのでは。
14デフォルトの名無しさん
2019/01/14(月) 12:39:00.55ID:aPj/koI6 なんでいまさらOpenGL
2019/01/14(月) 12:49:41.64ID:9CGMAJRv
Qtでよくね?
16デフォルトの名無しさん
2019/01/14(月) 13:52:16.32ID:wyHGUhfa OpenTKってのがあるのか。
この手のものって単なるラッパーだったり全機能が使えなかったりするから、UI周りのユーティリティ機能調べてからにした方が良いよ。
この手のものって単なるラッパーだったり全機能が使えなかったりするから、UI周りのユーティリティ機能調べてからにした方が良いよ。
2019/01/14(月) 13:52:19.68ID:pECAMsjR
ボタンぽちぽちしたいならC#
2019/01/14(月) 13:57:06.55ID:0VR066eS
2019/01/14(月) 14:34:15.39ID:ZugiBFc9
2019/01/15(火) 15:45:56.38ID:LwGnm4K1
2019/01/15(火) 15:54:16.06ID:CKmovdLr
nodejsならc++使えるよ
2019/01/15(火) 22:25:15.17ID:yGwqyR0/
何かしらのwebviewでよい
2019/01/16(水) 08:24:24.84ID:0P0+GloX
2019/01/16(水) 08:43:52.20ID:cTkVxPQr
実験とかデバッグ用とかじゃなくて、
ある程度マトモなGUIを出来るだけ手抜きで作ろうとしたらC#が楽だよな
Windowsの場合
ある程度マトモなGUIを出来るだけ手抜きで作ろうとしたらC#が楽だよな
Windowsの場合
2019/01/16(水) 09:03:30.35ID:FuOc/S0I
2019/01/16(水) 09:12:23.56ID:Tucl/crz
ガワだけHSPで作る
他はdllで呼ぶ
他はdllで呼ぶ
2019/01/16(水) 09:50:33.14ID:0P0+GloX
2019/01/16(水) 09:55:53.53ID:qfBMRYbT
>>27
どんなの作れるかサンプル見せて
どんなの作れるかサンプル見せて
2019/01/16(水) 10:25:25.72ID:0P0+GloX
なっ!?何を見せればええんじゃ;;
どんなの求めてるのかもわかんないのに
デスクトップに窓開けるならその窓Aの上にもう一枚窓B開くぐらい簡単だろ
いわゆるボタンも内部的には窓から派生したもの
独自にボタン窓作ってもいいしOS付属のコントロール使ってもいい
GUIってのはそもそも窓を扱うことから始まる
OpenGLもその窓に関連付けてぶん回すことになるから窓を扱う知識ぐらいは持ってたほうがいい
どんなの求めてるのかもわかんないのに
デスクトップに窓開けるならその窓Aの上にもう一枚窓B開くぐらい簡単だろ
いわゆるボタンも内部的には窓から派生したもの
独自にボタン窓作ってもいいしOS付属のコントロール使ってもいい
GUIってのはそもそも窓を扱うことから始まる
OpenGLもその窓に関連付けてぶん回すことになるから窓を扱う知識ぐらいは持ってたほうがいい
2019/01/16(水) 11:04:14.22ID:cQqcpmVT
>>13の疑問が解決してない限り適切なアドバイスは無理では。
2019/01/16(水) 11:38:23.40ID:fhF7r9UC
Qt使えで済む話では
2019/01/16(水) 11:56:53.19ID:v+ljjzUM
QtでOpenGLのレンダリング画面内にGUI作れるのかよ
33デフォルトの名無しさん
2019/01/16(水) 12:18:09.51ID:vTKVQdGX 馬鹿には無理
2019/01/16(水) 12:48:59.84ID:v+ljjzUM
お前にもな
35デフォルトの名無しさん
2019/01/16(水) 14:12:06.40ID:vTKVQdGX2019/01/16(水) 14:23:44.19ID:qfBMRYbT
2019/01/16(水) 18:29:43.56ID:V75kSyKb
C++モダン推奨な作者とか互換性なくてまともに動かなくても逆ギレしてきそう。
2019/01/16(水) 20:29:47.48ID:FuOc/S0I
2019/01/16(水) 20:37:33.51ID:CLrL7dI7
XViewお勧め(嘘)
2019/01/16(水) 22:01:48.52
OpenGLって最先端の座をVulkanに渡して後方支援の隠居するんでしょ?
2019/01/17(木) 00:32:08.14ID:Jxfvin+0
Vulkanさんはいつになったら引き継いでくれるんですか
2019/01/17(木) 09:54:35.20ID:4hvMH0x4
siv3dみたいなライブラリを作りたいのですが、彼はどうやってここまで作り上げたのでしょうか?
2019/01/17(木) 09:58:59.11ID:4hvMH0x4
ちなみに目標はboost水準並みのライブラリを作ることです
2019/01/17(木) 10:29:39.41ID:Jxfvin+0
君前も書いてなかった?
聞いてる時点で論外なのでもっと修行を積んでください
そして何かしらの専門家になってその知識をライブラリに詰め込んでください
ライブラリの作法は自分が上手いと思ったもののソースコードを読みながら真似をしてください
それを公開して多くの人の指摘を受けて修正を繰り返して完成
聞いてる時点で論外なのでもっと修行を積んでください
そして何かしらの専門家になってその知識をライブラリに詰め込んでください
ライブラリの作法は自分が上手いと思ったもののソースコードを読みながら真似をしてください
それを公開して多くの人の指摘を受けて修正を繰り返して完成
2019/01/17(木) 10:55:36.26ID:4hvMH0x4
2019/01/17(木) 11:34:13.64ID:yHhPWyqm
同じような質問ばかりしているから、「〇〇と〇〇はどちらが最強ですか」の人が芸風を変えたのかと思ってたが、別人だったかな。
2019/01/17(木) 14:00:05.14ID:qILhJ7MB
48デフォルトの名無しさん
2019/01/17(木) 14:27:58.60ID:DbtLCT5r あきらめろん
2019/01/17(木) 14:34:33.58ID:Jxfvin+0
コミュ力無いとプログラマをやるのは難しい
2019/01/17(木) 14:40:38.81ID:sj09P82H
>>45
ゲーム向けのライブラリって、素人のお遊びレベルなら
ゲーム開発素人でも作れるが、あまり実用的ではない
対してプロも使うようなレベルのものは、全部その道でプロとして長年携わってきた人が作ってる
Siv3Dがどちらなのかは知らんけど、ゲーム向けライブラリの専門家で、かつコンパイラも書けるって・・
いくらなんでも時間が足りないと思うよ、才能うんぬん抜きにしても
ゲーム向けのライブラリって、素人のお遊びレベルなら
ゲーム開発素人でも作れるが、あまり実用的ではない
対してプロも使うようなレベルのものは、全部その道でプロとして長年携わってきた人が作ってる
Siv3Dがどちらなのかは知らんけど、ゲーム向けライブラリの専門家で、かつコンパイラも書けるって・・
いくらなんでも時間が足りないと思うよ、才能うんぬん抜きにしても
2019/01/17(木) 14:59:03.94ID:Jxfvin+0
何気なく使ってるboostのライブラリ
あれ作るのに最初のバージョンで何ヶ月もかかってたりするからな
あれ作るのに最初のバージョンで何ヶ月もかかってたりするからな
2019/01/17(木) 15:51:14.58ID:qILhJ7MB
2019/01/17(木) 17:03:03.93ID:XBKdcbOD
あのさ、UEなんかはともかくとして、CryEngineとかだって
全分野を網羅なんかしてないよ
ゲーム開発の手順、必要な知識をそれなりに経験積んで知ろうともしないで
実用出来るレベルのものが作れるわけないでしょ
コンパイラに関しても多分そうだよ
凄いだの凄くないだの、名誉や自己満足が目的になってないか?
プロユースでなくともアマチュアが作ったものでも、そういう不純な動機で
まともに実用できるレベルのものを作った人を俺は見たことない
全分野を網羅なんかしてないよ
ゲーム開発の手順、必要な知識をそれなりに経験積んで知ろうともしないで
実用出来るレベルのものが作れるわけないでしょ
コンパイラに関しても多分そうだよ
凄いだの凄くないだの、名誉や自己満足が目的になってないか?
プロユースでなくともアマチュアが作ったものでも、そういう不純な動機で
まともに実用できるレベルのものを作った人を俺は見たことない
2019/01/17(木) 17:22:07.31
Boost採択ライブラリ作るより東大合格する方が簡単だよ
2019/01/17(木) 17:59:59.47ID:Jxfvin+0
大抵は自分用に作ったものを整理して公開するのがスタートだよね
公開が目的だと普通はモチベ持たないと思うよ
クオータ二オンひとつサポートするだけでも結構大変でしょ
数学的な知識はもちろんゲーム向けならWin,Mac,linuxiOS,Androidに対応が必要だね
遅いと論外なのでアーキテクチャを理解した上での個別の最適化もしなきゃいけないね
それらを一発でビルドできるスクリプトも書いてテスト環境も整備してドキュメントも書いてってなると気が遠くなる
公開が目的だと普通はモチベ持たないと思うよ
クオータ二オンひとつサポートするだけでも結構大変でしょ
数学的な知識はもちろんゲーム向けならWin,Mac,linuxiOS,Androidに対応が必要だね
遅いと論外なのでアーキテクチャを理解した上での個別の最適化もしなきゃいけないね
それらを一発でビルドできるスクリプトも書いてテスト環境も整備してドキュメントも書いてってなると気が遠くなる
2019/01/17(木) 18:05:35.75ID:4hvMH0x4
2019/01/17(木) 18:19:58.81ID:4hvMH0x4
2019/01/17(木) 18:32:34.73ID:J7soMCZG
みんな!これだけ諭してやってもどうしてもヤルっていってるんだ、わしらのせがれにやらせてやろうじゃないか
若いってのはいいもんだ・・どんな小さな希望にも自分の全てを賭ける事が出来るからな・・
若いってのはいいもんだ・・どんな小さな希望にも自分の全てを賭ける事が出来るからな・・
2019/01/17(木) 18:34:25.93ID:XBKdcbOD
2019/01/17(木) 18:49:49.71ID:4hvMH0x4
2019/01/17(木) 21:48:24.67ID:LPUGm7qZ
>>58
逃げるんじゃない、俺は逃げるんじゃないぞ・・・必ず・・帰って・・・
逃げるんじゃない、俺は逃げるんじゃないぞ・・・必ず・・帰って・・・
62デフォルトの名無しさん
2019/01/17(木) 22:23:36.68ID:pHJS7o/9 ジャニュアリー、フェブラリー、ライブラリーみたいな。
2019/01/18(金) 12:04:17.62ID:x1XjZMTo
ttp://tkido.com/blog/wp-content/fc2images/20090215143630.jpg
当時の西海岸の空気がどんなもんだったかはこの写真にも顕れてる
当時の西海岸の空気がどんなもんだったかはこの写真にも顕れてる
2019/01/19(土) 11:23:37.97ID:9NMu+pMT
音楽に合わせて、グラフィックを生成するプログラムを作りたいのですが、おすすめのライブラリありませんか?
65デフォルトの名無しさん
2019/01/19(土) 11:35:54.12ID:Qiw5pxsO Unity
66デフォルトの名無しさん
2019/01/19(土) 16:47:13.98ID:SwmccsG2 コンパイラエラー C2872 あいまいなシンボルです。
コンパイルエラーが解消出来ません。
ご教授下さい。
■コンパイルエラー内容
error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです
■やりたいこと
AmazonのAPI「Marketplace Web Service API (MWS)」のHello world
以下ページの右上 オレンジ色の「Download」ボタンから入手できる
「MWSProducts_2011-10-01_v2017-03-22.dll」の使用
https://developer.amazonservices.jp/doc/products/products/v20111001/cSharp.html
■DLLの使用
Visual Studioの対象プロジェクトのプロパティから、
上記DLLの参照を追加しました
■コーディング
using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK
using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー
■ご質問
上位の「MarketplaceWebServiceProducts」が正常なのに、
下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。
解決策をご教授ください。(可能であれば実装をご提供ください)
■環境
Visual Studio
.Net 4.0
C++/Cli
コンパイルエラーが解消出来ません。
ご教授下さい。
■コンパイルエラー内容
error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです
■やりたいこと
AmazonのAPI「Marketplace Web Service API (MWS)」のHello world
以下ページの右上 オレンジ色の「Download」ボタンから入手できる
「MWSProducts_2011-10-01_v2017-03-22.dll」の使用
https://developer.amazonservices.jp/doc/products/products/v20111001/cSharp.html
■DLLの使用
Visual Studioの対象プロジェクトのプロパティから、
上記DLLの参照を追加しました
■コーディング
using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK
using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー
■ご質問
上位の「MarketplaceWebServiceProducts」が正常なのに、
下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。
解決策をご教授ください。(可能であれば実装をご提供ください)
■環境
Visual Studio
.Net 4.0
C++/Cli
2019/01/19(土) 17:21:42.22ID:wiNfQeeu
ここに正確なエラーメッセージを書いて、そのメッセージで検索すれば?
Mock という名称が、既に使われているとか?
それと、同じ質問を、複数のスレに書き込む(マルチポスト)のは禁止です!
他のスレに書き込んだものを、取り消すように
「このスレに移動します」と書くこと
Mock という名称が、既に使われているとか?
それと、同じ質問を、複数のスレに書き込む(マルチポスト)のは禁止です!
他のスレに書き込んだものを、取り消すように
「このスレに移動します」と書くこと
2019/01/19(土) 17:37:31.29ID:qdZjrG91
自分が聞いてる質問に「ご質問」とはなかなか図太い奴だな
気に入った
本番でだけ再現するタイミングバグを作り込む権利をやろう
気に入った
本番でだけ再現するタイミングバグを作り込む権利をやろう
2019/01/19(土) 17:40:40.26ID:ryB8QzdH
MarketplaceWebServiceProducts::Mockの中にあるクラスなり関数の名前と
すでに使用されている別の関数なりクラスなりの名前と衝突している
おそらくコンパイルエラーはその衝突している名前を持つものを使ってる付近で発生しているのではないかと思うが
すでに使用されている別の関数なりクラスなりの名前と衝突している
おそらくコンパイルエラーはその衝突している名前を持つものを使ってる付近で発生しているのではないかと思うが
70デフォルトの名無しさん
2019/01/19(土) 17:43:49.62ID:SwmccsG2 >67
ご回答ありがとうございます。
詳細なエラーメッセージは以下となります
エラー 1 error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです。 c:\users\XXXX\amazon.h 2666 1
Mock という名称が、既に使われているとか?
→
はい私もその認識でおりますが、解決方法が分かりません。
「このスレに移動します」
でいかがでしょうか
※5ちゃんねる初心者でよくわかっておりませんスレとはなんでしょうか?
>>68
権利を頂きありがとうございます。
解決策も頂けますか?
ご回答ありがとうございます。
詳細なエラーメッセージは以下となります
エラー 1 error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです。 c:\users\XXXX\amazon.h 2666 1
Mock という名称が、既に使われているとか?
→
はい私もその認識でおりますが、解決方法が分かりません。
「このスレに移動します」
でいかがでしょうか
※5ちゃんねる初心者でよくわかっておりませんスレとはなんでしょうか?
>>68
権利を頂きありがとうございます。
解決策も頂けますか?
71デフォルトの名無しさん
2019/01/19(土) 17:45:47.73ID:SwmccsG2 >>69
ご回答ありがとうございます。
「MarketplaceWebServiceProducts」ではなく、
「Mock」でもなく、
「Mock」の中にあるメソッドクラス定義が重複しているということでしょうか?
なるほどですね。
では一度プロジェクトをまっさらにしてどこと重複しているか地味に見つけていくしかないでしょうか?
解決策をご教授ください
ご回答ありがとうございます。
「MarketplaceWebServiceProducts」ではなく、
「Mock」でもなく、
「Mock」の中にあるメソッドクラス定義が重複しているということでしょうか?
なるほどですね。
では一度プロジェクトをまっさらにしてどこと重複しているか地味に見つけていくしかないでしょうか?
解決策をご教授ください
2019/01/19(土) 17:54:13.43ID:ryB8QzdH
using namespaceじゃなくて名前空間エイリアス使って短い別名で使えばいいんじゃないかな
正直何が衝突してるか調べるのは難儀だとおもう
正直何が衝突してるか調べるのは難儀だとおもう
2019/01/19(土) 17:55:07.01ID:1QForECs
74デフォルトの名無しさん
2019/01/19(土) 18:08:43.20ID:SwmccsG22019/01/19(土) 18:11:44.87ID:ryB8QzdH
さすがにそれはググってほしいが
https://marycore.jp/prog/cpp/namespace-alias/
https://marycore.jp/prog/cpp/namespace-alias/
76デフォルトの名無しさん
2019/01/19(土) 18:13:24.83ID:SwmccsG2 >>72
解決しました!!!!!
namespace tekitounanamae= MarketplaceWebServiceProducts;
using namespace tekitounanamae::Mock;
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!
解決しました!!!!!
namespace tekitounanamae= MarketplaceWebServiceProducts;
using namespace tekitounanamae::Mock;
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!
2019/01/19(土) 18:19:39.31ID:wiNfQeeu
>本当にありがとうございます!!!!!!!!!!!!
>キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!
この質問者は、荒らしだから、無視しろ!
>キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!
この質問者は、荒らしだから、無視しろ!
78デフォルトの名無しさん
2019/01/19(土) 18:23:26.12ID:SwmccsG2 >>77
はい!!もう無視してもらって構いません!解決したので!!
ただこれだけは声を大にして言いたい
>72
様
神様、王様、仏様
キモヲタ様!!!!!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!
はい!!もう無視してもらって構いません!解決したので!!
ただこれだけは声を大にして言いたい
>72
様
神様、王様、仏様
キモヲタ様!!!!!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
本当にありがとうございます!!!!!!!!!!!!
キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!
2019/01/19(土) 18:31:33.69ID:P/iwNPAz
1行目を書かずに
using namespace MarketplaceWebServiceProducts::Mock;
とだけ書いたらどうなるんだろう?
using namespace MarketplaceWebServiceProducts::Mock;
とだけ書いたらどうなるんだろう?
2019/01/19(土) 18:33:04.39ID:UZImuDOq
2019/01/19(土) 18:55:01.07ID:P/iwNPAz
調べてみたら、以下のようになっていた。
MarketplaceWebServiceProducts は、namespace と interface で同じ名前が
使われている。だから、>>66 に書いてしまうと、「2行目」は、
using namespace MarketplaceWebServiceProducts::MarketplaceWebServiceProducts::Mock;
と書いた可能性もコンパイラは配慮しないといけなくなった。
この場合、書いた人の書き間違いの可能性もあるから、エラーを出したほうが良いと判断して
エラーを出した可能性がある。
[MarketplaceWebServiceProducts.cs]
namespace MarketplaceWebServiceProducts
{
/// <summary>
/// This is the Products API section of the Marketplace Web Service.
/// </summary>
public interface MarketplaceWebServiceProducts
{
・・・
}
}
MarketplaceWebServiceProducts は、namespace と interface で同じ名前が
使われている。だから、>>66 に書いてしまうと、「2行目」は、
using namespace MarketplaceWebServiceProducts::MarketplaceWebServiceProducts::Mock;
と書いた可能性もコンパイラは配慮しないといけなくなった。
この場合、書いた人の書き間違いの可能性もあるから、エラーを出したほうが良いと判断して
エラーを出した可能性がある。
[MarketplaceWebServiceProducts.cs]
namespace MarketplaceWebServiceProducts
{
/// <summary>
/// This is the Products API section of the Marketplace Web Service.
/// </summary>
public interface MarketplaceWebServiceProducts
{
・・・
}
}
2019/01/19(土) 19:09:31.96ID:dEg5febg
83デフォルトの名無しさん
2019/01/20(日) 11:17:16.20ID:VyjEZRK/ フォントが違う書き込みってどうやってるのかな。
2019/01/20(日) 12:17:33.65ID:lcBTQn4G
>>66
【改善案】
試してないが、以下のように書くとエラーが消える可能性があるかも。
[1]
using namespace MarketplaceWebServiceProducts;
using namespace Mock;
[2]
using namespace MarketplaceWebServiceProducts;
using namespace ::MarketplaceWebServiceProducts::Mock;
[3]
using namespace MarketplaceWebServiceProducts::Mock;
【改善案】
試してないが、以下のように書くとエラーが消える可能性があるかも。
[1]
using namespace MarketplaceWebServiceProducts;
using namespace Mock;
[2]
using namespace MarketplaceWebServiceProducts;
using namespace ::MarketplaceWebServiceProducts::Mock;
[3]
using namespace MarketplaceWebServiceProducts::Mock;
85デフォルトの名無しさん
2019/01/20(日) 13:56:37.78ID:Q8jHF7yk namespace mock = MarketplaceWebServiceProducts::Mock;
using namespace MarketplaceWebServiceProducts;
の方がまし
using namespace MarketplaceWebServiceProducts;
の方がまし
2019/01/20(日) 14:07:58.72ID:KgYdw/xM
にしてもなんでこんなドイツ語みたいにダラダラと長いんだろう
Javaの設計ってどっかで間違ってないか?
絶対におかしいよ
Javaの設計ってどっかで間違ってないか?
絶対におかしいよ
2019/01/20(日) 14:34:42.91ID:lcBTQn4G
2019/01/20(日) 16:21:00.45ID:QlCbm9fS
そうだな
昔のCみたいにmpwsp_mとかの方がカッコいいよな
昔のCみたいにmpwsp_mとかの方がカッコいいよな
2019/01/20(日) 16:33:31.26ID:KgYdw/xM
ただ単に空白入りの
Marketplace Web Service Products
と書ければいいだけじゃん
で、それはともかく、プログラミング業界じゃ英語のドイツ語化が進んでる
これは見ての通り
ドイツ語とは違って大文字になっているだけちょっとだけプログラミング英語の方がマシ
Marketplace Web Service Products
と書ければいいだけじゃん
で、それはともかく、プログラミング業界じゃ英語のドイツ語化が進んでる
これは見ての通り
ドイツ語とは違って大文字になっているだけちょっとだけプログラミング英語の方がマシ
90デフォルトの名無しさん
2019/01/20(日) 18:05:01.77ID:e0W63kw62019/01/20(日) 20:35:06.80ID:AhZ1TFnS
c++templateの欠点ってなんだと思います?
2019/01/20(日) 20:50:23.50ID:JCcmHSE0
所詮マクロ
2019/01/20(日) 20:55:15.65ID:oi14Cno9
コンセプト
2019/01/20(日) 21:32:39.75
コンパイラのエラー報告の野暮ったさ
2019/01/20(日) 21:41:18.95ID:6b5ouX2x
デバッガが無い
2019/01/20(日) 21:47:32.95ID:AhZ1TFnS
意外にあるね。所詮マクロというのは利点でもあると思うけど
2019/01/20(日) 21:59:43.25ID:xJh8HFJd
なぜかpublic以外にアクセスできてしまう
2019/01/20(日) 22:56:21.45ID:hxPCkRns
ビルド檄遅。
ソースジェネレータ使った方がマシ。
ソースジェネレータ使った方がマシ。
2019/01/20(日) 23:39:00.56ID:8K8OajRY
100デフォルトの名無しさん
2019/01/20(日) 23:48:43.34ID:oi14Cno9 エラーメッセージからエラー原因が分からないのはテンプレート関連よりもそれ以外の要因のが多い
テンプレートの場合はエラーが大量に出てくるだけで、どこで起きてるかは割とわかる
テンプレートの場合はエラーが大量に出てくるだけで、どこで起きてるかは割とわかる
101デフォルトの名無しさん
2019/01/21(月) 00:17:38.90ID:d2jk7vmr テンプレートの問題じゃなくてコンパイラの問題だろ
102デフォルトの名無しさん
2019/01/21(月) 01:09:51.66ID:6CjQd7tm >>99
テンプレート使うときはテスト用のプロジェクト作ってネチネチ単体テスト書かんとダメだね。PODで具現化して肌で感覚つかんでおかないと本番コードでしくじるとハマる。コンパイル時間短縮のためにもテスト用のプロジェクトは必要。
declval, decletype, SFINAE, static_assertでコンセプト記述、必要に応じてtraits定義すれば、頭抱えるようなイミフエラーはほぼ撲滅できる。
無の心で手を動かさないといけないけど、これがテンプレの現状。
テンプレート使うときはテスト用のプロジェクト作ってネチネチ単体テスト書かんとダメだね。PODで具現化して肌で感覚つかんでおかないと本番コードでしくじるとハマる。コンパイル時間短縮のためにもテスト用のプロジェクトは必要。
declval, decletype, SFINAE, static_assertでコンセプト記述、必要に応じてtraits定義すれば、頭抱えるようなイミフエラーはほぼ撲滅できる。
無の心で手を動かさないといけないけど、これがテンプレの現状。
103デフォルトの名無しさん
2019/01/21(月) 01:51:32.70ID:c5b5w6pA 型の解決は実行時点でいろいろやってほしいわ
104デフォルトの名無しさん
2019/01/21(月) 06:17:25.15ID:NbFzEAOW >>103
それはC++の理念から外れるから違う言語を使うべきじゃね?
それはC++の理念から外れるから違う言語を使うべきじゃね?
105デフォルトの名無しさん
2019/01/21(月) 13:52:50.10ID:9a4kB+2V >>95に一票
ていうか最近のC++標準ライブラリはテンプレートで何でもやろうとしすぎだわ
メタプログラミングとか突き詰めていったら
例えばテンプレートに渡す型と定数値の違いをまとめて扱える
テンプレートテンプレートメタメタプログラミングとかサポートすんのかと
所詮は裏技やトリックの類だと再認識した方がいい
ていうか最近のC++標準ライブラリはテンプレートで何でもやろうとしすぎだわ
メタプログラミングとか突き詰めていったら
例えばテンプレートに渡す型と定数値の違いをまとめて扱える
テンプレートテンプレートメタメタプログラミングとかサポートすんのかと
所詮は裏技やトリックの類だと再認識した方がいい
106デフォルトの名無しさん
2019/01/21(月) 14:35:14.38ID:6CjQd7tm std委員会の人、自分で作った仕様をハックしてるもんな。それはどうかと思うわ。
テンプレに専用デバッガが必要、ってのは賛成。
テンプレに専用デバッガが必要、ってのは賛成。
107デフォルトの名無しさん
2019/01/21(月) 14:47:30.54ID:d2jk7vmr ステップ実行までとは言わないがコードがどのよう実体化したのかプレビューするツールとかないのかね
108デフォルトの名無しさん
2019/01/21(月) 17:03:26.68ID:QaxUTqW0 例えばどんな感じに表示して欲しい?
109デフォルトの名無しさん
2019/01/21(月) 17:44:06.66 コンパイルエラーの文字列を横取りしてヒューマンリーダブルに書き換えられるようにして
○○さんのエラー報告再解釈パッチが人気〜みたいにして
○○さんのエラー報告再解釈パッチが人気〜みたいにして
110デフォルトの名無しさん
2019/01/21(月) 19:44:31.28ID:awq8xDBs そんなくだらんことに時間使うくらいなら型付コードジェネレーターの標準でも定めた方が
なんぼか生産的だろうに。
なんでもコンパイラにブラックボックス処理させるのが根本的問題だわ。
なんぼか生産的だろうに。
なんでもコンパイラにブラックボックス処理させるのが根本的問題だわ。
111デフォルトの名無しさん
2019/01/21(月) 19:46:20.57ID:TwxiaWJQ そこでRubyですよ。
112デフォルトの名無しさん
2019/01/21(月) 20:32:09.87ID:5kYBxhZB ゴミはやだぁ
113デフォルトの名無しさん
2019/01/21(月) 21:57:35.19ID:awq8xDBs 結局makeもまともにかけないバカの意見を重視してるだけなんだよね。
114デフォルトの名無しさん
2019/01/21(月) 21:59:46.43ID:d2jk7vmr CMakeではいかんのか
115デフォルトの名無しさん
2019/01/21(月) 23:07:50.66ID:awq8xDBs そういうとこだよ。
ヘッダー依存を地道に解決させるだけで十分なところを無駄にデラックスな仕組みを入れようとする。
ヘッダー依存を地道に解決させるだけで十分なところを無駄にデラックスな仕組みを入れようとする。
116デフォルトの名無しさん
2019/01/22(火) 00:09:21.90ID:a1X2ytWX 地道にする意味あるか?
117デフォルトの名無しさん
2019/01/22(火) 01:09:39.72ID:6S+2YJAI 最近のC++の使用を考えてる人は、頭が悪いのかも知れんな。
特に、boostや、標準テンプレートライブラリを考えた人は
アホなんじゃないかと思う。設計がへたくそ。
特に、boostや、標準テンプレートライブラリを考えた人は
アホなんじゃないかと思う。設計がへたくそ。
118デフォルトの名無しさん
2019/01/22(火) 01:10:06.96ID:6S+2YJAI 使用--->仕様。
119デフォルトの名無しさん
2019/01/22(火) 01:14:06.94ID:9jnVrHe3 C++は抽象を実装しているのだ。
数学とかそっち系の人だべ。
数学とかそっち系の人だべ。
120デフォルトの名無しさん
2019/01/22(火) 02:13:13.69ID:a1X2ytWX 小綺麗にすることは目指していないので下手くそに見えるかも知れんな
121デフォルトの名無しさん
2019/01/22(火) 07:26:00.12ID:SqrOcoDp122デフォルトの名無しさん
2019/01/22(火) 07:46:01.37ID:yRak9Ndf 天才プログラマー現る
123デフォルトの名無しさん
2019/01/22(火) 08:00:25.37ID:a1X2ytWX エラーメッセージは言うほど分かりづらいかってのとそれコンパイラの問題じゃねっていう流れじゃなかったのか
そこで道具を改良するではなく人力で対応しようとするとか原始人か?
そこで道具を改良するではなく人力で対応しようとするとか原始人か?
124デフォルトの名無しさん
2019/01/22(火) 08:02:39.53ID:btZJwVmZ boostは下から上まであるけど、STLの設計が下手くそとはまあ・・・
125デフォルトの名無しさん
2019/01/22(火) 08:09:49.17ID:Hw20mf8u googleはtemplate禁止だっけ?
チーム開発ではなかなかレベル揃えるの大変だ
チーム開発ではなかなかレベル揃えるの大変だ
126デフォルトの名無しさん
2019/01/22(火) 08:47:48.92ID:rVf1VxF0 >>124
メジャーな物を否定する俺カッコイイみたいな奴じゃないかな
メジャーな物を否定する俺カッコイイみたいな奴じゃないかな
127デフォルトの名無しさん
2019/01/22(火) 09:27:28.56ID:a1X2ytWX128デフォルトの名無しさん
2019/01/22(火) 11:55:17.71ID:xs8/V/zK >>121
そりゃ一つずつちゃんと追っていけば原因はいつかわかるけど、
自分が書いたテンプレートならともかく他人が書いたもののエラー追うのは
他人が書いたメタプログラミングの意図を正確に把握する必要が出てくる(特にboostとか地獄)
コンセプトが導入されたらその辺はマシになるだろうけど
結局それはそれでテンプレート使うときにやらなきゃいけない作業が増えるというw
そりゃ一つずつちゃんと追っていけば原因はいつかわかるけど、
自分が書いたテンプレートならともかく他人が書いたもののエラー追うのは
他人が書いたメタプログラミングの意図を正確に把握する必要が出てくる(特にboostとか地獄)
コンセプトが導入されたらその辺はマシになるだろうけど
結局それはそれでテンプレート使うときにやらなきゃいけない作業が増えるというw
129デフォルトの名無しさん
2019/01/22(火) 12:34:08.56ID:MeB+96eJ >>125
Googleは例外禁止、templateなしはさすがに無理がある
Googleは例外禁止、templateなしはさすがに無理がある
130デフォルトの名無しさん
2019/01/22(火) 13:47:49.58ID:9jnVrHe3 細かいバグを拾うために out_of_range を投げる位はありだと思うが、「構造化された例外」の使い方が俺には判らん。
131デフォルトの名無しさん
2019/01/22(火) 14:50:43.43ID:Hw20mf8u 禁止はtry-catchか。
曖昧な状態を許すだけで、使いどころがよくわからんな。使えるひとすごい。
曖昧な状態を許すだけで、使いどころがよくわからんな。使えるひとすごい。
132デフォルトの名無しさん
2019/01/22(火) 19:10:41.32ID:SqrOcoDp >>128
だからやってることを刻めるようにしろって意見だよ。
テンプレートが担ってる役割は恐ろしく多い。
型のオーバーロード(推論)、マクロコードの展開、コンパイル。
これらを暗黙に一気にやってるからデバッグしずらいんだよ。
だからやってることを刻めるようにしろって意見だよ。
テンプレートが担ってる役割は恐ろしく多い。
型のオーバーロード(推論)、マクロコードの展開、コンパイル。
これらを暗黙に一気にやってるからデバッグしずらいんだよ。
133デフォルトの名無しさん
2019/01/22(火) 21:15:35.78ID:btZJwVmZ std::expectedはまだかいな・・・
134デフォルトの名無しさん
2019/01/22(火) 22:35:07.16ID:yVg1Ud1H クラスのprivate変数として vector<int> a を宣言したいとき、
vector<int> a(8, 0);
みたいに初期化できないのはなんでですか?
vector<int> a(8, 0);
みたいに初期化できないのはなんでですか?
135デフォルトの名無しさん
2019/01/22(火) 22:51:05.39ID:a1X2ytWX こうしろ
class hage {
public:
hage(): a(8,0) {}
private:
vector<int> a;
}
class hage {
public:
hage(): a(8,0) {}
private:
vector<int> a;
}
136デフォルトの名無しさん
2019/01/22(火) 22:53:48.16ID:btZJwVmZ137デフォルトの名無しさん
2019/01/22(火) 23:27:53.08ID:yVg1Ud1H138デフォルトの名無しさん
2019/01/22(火) 23:50:31.62ID:btZJwVmZ >>137
そう
そう
139デフォルトの名無しさん
2019/01/23(水) 01:15:58.41ID:OuY8oVZH140デフォルトの名無しさん
2019/01/23(水) 01:52:04.42ID:eok9TVn7 >>139
コンストラクタで初期化するのはダメなのか?
コンストラクタで初期化するのはダメなのか?
141デフォルトの名無しさん
2019/01/23(水) 02:10:57.88ID:OuY8oVZH142デフォルトの名無しさん
2019/01/23(水) 02:13:42.34ID:b+R6E+3S >>135 が答え書いてる。
143デフォルトの名無しさん
2019/01/23(水) 02:23:09.47ID:OuY8oVZH 済みません今やっと意味分かりました
ありがとうございました
ありがとうございました
144デフォルトの名無しさん
2019/01/23(水) 07:48:31.28ID:lyUDutjU >>139
それも同じようにすれば行けるはずだけど
それも同じようにすれば行けるはずだけど
145デフォルトの名無しさん
2019/01/24(木) 12:36:30.49ID:u9eVW+6J 前々から思ってたんだけどなんでprivateのを下に書くの
上の方がよくね?
上の方がよくね?
146デフォルトの名無しさん
2019/01/24(木) 15:35:52.58ID:IARMQrId 本来、privateは利用者にとっちゃ興味ない内容だから、C++では伝統的に下で書かれることが多いけど、java登場以来、上に書く人が増えたと思う。
上に書いたほうがクラスの規模感や役割が把握しやすいみたいなメリットはあるかもね
上に書いたほうがクラスの規模感や役割が把握しやすいみたいなメリットはあるかもね
147デフォルトの名無しさん
2019/01/24(木) 15:46:55.29ID:2OUib2sy C++は他の言語からすると書き方流派の縛りは緩いから(歴史長すぎてさまざまな流派が発生しては消えてるから)
自由に書いていい
ただ、C++ではメンバは上から初期化されるルールなので初期化順によって何らか問題が発生する場合のみ
どの位置に書くか注意すべきだがそんなケースは滅多にない
自由に書いていい
ただ、C++ではメンバは上から初期化されるルールなので初期化順によって何らか問題が発生する場合のみ
どの位置に書くか注意すべきだがそんなケースは滅多にない
148デフォルトの名無しさん
2019/01/24(木) 16:15:51.04ID:iPES0qac 上がいいよ。
でもそもそもprivateなんてだらだら書かんで実装に隠せよと。
でもそもそもprivateなんてだらだら書かんで実装に隠せよと。
149デフォルトの名無しさん
2019/01/24(木) 17:00:47.34ID:9qFVeQ4q 上からprivate変数、public関数、private関数の順かな。
インナークラスや型情報、static があるときはそれらが一番上。
インナークラスや型情報、static があるときはそれらが一番上。
150デフォルトの名無しさん
2019/01/24(木) 18:23:27.95ID:/05KE7l4 >>146
おいらは前から、privateを最初に書くのは、アメリカや英語文化の影響では
ないかと思っていた。
・英語では、First name, Last name の順。
・地名も、小さい場所から、大まかな場所へ書かれる。町名、市名、県名、国名
の順のように。
・アメリカでは、public 的なものより、private が優先されるイメージがある。
・変数名も、大まかな所属は後の方に書かれ、pszName, lenName, idxData の
ようになる。
でも、class を使う側の目線で見た時、private や protected のデータは、
何の意味も無いし、今後のバージョンアップで変化することもあるから、
上に書くのは無駄のように思える。
おいらは前から、privateを最初に書くのは、アメリカや英語文化の影響では
ないかと思っていた。
・英語では、First name, Last name の順。
・地名も、小さい場所から、大まかな場所へ書かれる。町名、市名、県名、国名
の順のように。
・アメリカでは、public 的なものより、private が優先されるイメージがある。
・変数名も、大まかな所属は後の方に書かれ、pszName, lenName, idxData の
ようになる。
でも、class を使う側の目線で見た時、private や protected のデータは、
何の意味も無いし、今後のバージョンアップで変化することもあるから、
上に書くのは無駄のように思える。
151はちみつ餃子 ◆8X2XSCHEME
2019/01/24(木) 18:49:58.73ID:+mTbExzf class だと private がデフォだから
private なメンバから書き始めるとちょっと省略できて楽って程度の
つまらない理由なんじゃないかと思ってる。
private なメンバから書き始めるとちょっと省略できて楽って程度の
つまらない理由なんじゃないかと思ってる。
152デフォルトの名無しさん
2019/01/24(木) 19:16:04.39ID:yn3EoOxl 同じ理由でstructにしてpublic省略してる
153デフォルトの名無しさん
2019/01/24(木) 19:26:04.87ID:ms7KdBo9 privateな変数は使う側に関係ないから下だな。
154デフォルトの名無しさん
2019/01/24(木) 20:38:16.78ID:DHqv5UTj 【移民】
留学生以外の、海外大学卒の外国人採用、過去最高に 4社に1社 エンジニアでは日本語能力を問わない企業も
https://asahi.5ch.net/test/read.cgi/newsplus/1548315122/
留学生以外の、海外大学卒の外国人採用、過去最高に 4社に1社 エンジニアでは日本語能力を問わない企業も
https://asahi.5ch.net/test/read.cgi/newsplus/1548315122/
155デフォルトの名無しさん
2019/01/24(木) 20:49:10.50ID:tLfj0brW windowsだとcondition_variableを使う理由ってなにがありますか?
平気でspurious wakeup問題があるなんていってるし、
Event使ったほうがいいと思うのですが?
平気でspurious wakeup問題があるなんていってるし、
Event使ったほうがいいと思うのですが?
156デフォルトの名無しさん
2019/01/24(木) 21:06:26.36ID:ux0AymZg 移植性が上がる
157デフォルトの名無しさん
2019/01/25(金) 00:36:17.92ID:ps5S8w5k 責任を持つデータを明示する。
保守担当者に「このデータ壊すな」というメッセージでもある。
メンバ関数はデータに対する操作なので、変数という名詞が必要。
なのでクラスの頭に書く主義。
保守担当者に「このデータ壊すな」というメッセージでもある。
メンバ関数はデータに対する操作なので、変数という名詞が必要。
なのでクラスの頭に書く主義。
158デフォルトの名無しさん
2019/01/25(金) 01:28:17.20ID:1j93aj/B privateに入れてる変数は壊しても構わないと考えてる。
publicやprotectedは上でもいいや
publicやprotectedは上でもいいや
159デフォルトの名無しさん
2019/01/25(金) 03:22:49.47ID:GAV2PKJV 壊してもいいのはprivate
publicは原則として壊してはいけない
publicは原則として壊してはいけない
160デフォルトの名無しさん
2019/01/25(金) 06:47:27.24ID:x34OdHkB 本当はprivateのメンバなんてヘッダに書きたくないんだよな
使う側にとってはどうでもいいことなんだし
まあデータメンバーはsizeof確定させるためにヘッダに書かざるを得ないんだけど
privateメンバ関数はcppに隠す手段が欲しい
使う側にとってはどうでもいいことなんだし
まあデータメンバーはsizeof確定させるためにヘッダに書かざるを得ないんだけど
privateメンバ関数はcppに隠す手段が欲しい
161デフォルトの名無しさん
2019/01/25(金) 06:52:07.07ID:9AQeTihm そこでインクルードですよ
162デフォルトの名無しさん
2019/01/25(金) 07:13:33.15ID:ps5S8w5k >>160
Pimpl がそれじゃなかった?
Pimpl がそれじゃなかった?
163デフォルトの名無しさん
2019/01/25(金) 07:28:33.12ID:x34OdHkB できるけどポインタ経由になるしめんどくさいし
164デフォルトの名無しさん
2019/01/25(金) 07:39:18.36ID:3fp3RkdD どうでもいい実装は別に無名のnamespaceに入れてもいいわけだしね。
なんか全部privateに書けって開発チームもいるけど。
なんか全部privateに書けって開発チームもいるけど。
165デフォルトの名無しさん
2019/01/25(金) 07:46:20.34ID:GAV2PKJV テンプレートのときどうすんの
166デフォルトの名無しさん
2019/01/25(金) 09:33:40.77ID:081QfTJ8 templateクラスみたいなのは、独立したヘッダに素直に書くのが良いんだと思う
167デフォルトの名無しさん
2019/01/25(金) 12:11:07.30ID:58XK3b4v Windows で動いて、かつ、llc.exe --version で Registered Targets に、
WASM32
と表示が出るタイプの(-march=WASM32 と指定出来るタイプの)
llc.exe のバイナリって、どこかで DL できない?
ソースからビルドするのは、当方は VS 15 以上を持ってないので無理。
cygwin からだとビルド出来るらしいけど、出来たバイナリが cygwin なしで起動
できないかもしれないのが問題。
WASM32
と表示が出るタイプの(-march=WASM32 と指定出来るタイプの)
llc.exe のバイナリって、どこかで DL できない?
ソースからビルドするのは、当方は VS 15 以上を持ってないので無理。
cygwin からだとビルド出来るらしいけど、出来たバイナリが cygwin なしで起動
できないかもしれないのが問題。
168デフォルトの名無しさん
2019/01/25(金) 12:50:28.30ID:58XK3b4v https://stackoverflow.com/questions/51310020/is-there-a-pre-built-clang-library-for-windows
↑を見つけたのでDL中。289MB だけど、残り3時間と表示されるうちの環境。
https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows
ひきこもりのLより。
↑を見つけたのでDL中。289MB だけど、残り3時間と表示されるうちの環境。
https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows
ひきこもりのLより。
169デフォルトの名無しさん
2019/01/25(金) 16:37:51.73ID:e3Ig3DX7 >>168
三時間経過して確認してみたら、ありがたいことに、ちゃんと、
ビルド済みの llc.exe があり、Win7, 64BIT で実行できて、
llc --help では、Registered Target がものすごく大量に出てきて、
その中に、wasm32, wasm64 の文字があった。
x86, x86-64 の文字もある。
ちなみに、Emscripten の emsdk に含まれている llc.exe の、
Registered Target は、js, x86, x86-64 の3つのみ。
Emscripten ではこれを使って LLVM を、いったん asm.js という
JavaScript の subset 的な言語に変換してから、自前で色々な
処理を行い、後から binaryen の asm2wasm などで
wasm に変換している。
今回 DL できた llc.exe では、LLVM を直接 wasm の wast (S式)
形式に直せるらしい。
三時間経過して確認してみたら、ありがたいことに、ちゃんと、
ビルド済みの llc.exe があり、Win7, 64BIT で実行できて、
llc --help では、Registered Target がものすごく大量に出てきて、
その中に、wasm32, wasm64 の文字があった。
x86, x86-64 の文字もある。
ちなみに、Emscripten の emsdk に含まれている llc.exe の、
Registered Target は、js, x86, x86-64 の3つのみ。
Emscripten ではこれを使って LLVM を、いったん asm.js という
JavaScript の subset 的な言語に変換してから、自前で色々な
処理を行い、後から binaryen の asm2wasm などで
wasm に変換している。
今回 DL できた llc.exe では、LLVM を直接 wasm の wast (S式)
形式に直せるらしい。
170デフォルトの名無しさん
2019/01/26(土) 04:41:46.50ID:stTjLhtD >>159
public変数を書いてる奴と仕事したくないわ。
public変数を書いてる奴と仕事したくないわ。
171デフォルトの名無しさん
2019/01/26(土) 07:26:23.40ID:Xt/1tXeH 変数はアクセス関数を通して公開すると変更に強くなると設計の本に書いてあるけど、だったらC++に元からプロパティ型があれば良いのでは。
172デフォルトの名無しさん
2019/01/26(土) 07:44:38.56ID:xGyN5S0n 114514回目のプロパティ談義が始まったぞ〜
うんざりしてない人だけ集まれ
うんざりしてない人だけ集まれ
173デフォルトの名無しさん
2019/01/26(土) 09:28:36.59ID:LnCU6M5B リファクタリングもテストもベンチマーク取りもやらんバカに限って
そういうことに興味持つよな。
そういうことに興味持つよな。
174デフォルトの名無しさん
2019/01/26(土) 09:50:44.23ID:Xt/1tXeH プロパティ型が無いから不毛な議論が続くのであって、プロパティ型が入れば世の中から争いが一つ消える。
不要論者は争いたいだけのくず。
不要論者は争いたいだけのくず。
175デフォルトの名無しさん
2019/01/26(土) 11:05:06.38ID:ASUOD9dJ プロパティのアドレス取ったらどうなるべきなのか解決するまでC++にプロパティは入りません
176デフォルトの名無しさん
2019/01/26(土) 11:34:57.90ID:OQu6JdJq >>174
皆を納得させられるだけの仕様を君が提案して、この不毛な議論に終止符を打ってくださいな。
皆を納得させられるだけの仕様を君が提案して、この不毛な議論に終止符を打ってくださいな。
177デフォルトの名無しさん
2019/01/26(土) 11:43:59.62ID:mG/AnkbD メンバ変数宣言と初期化時に、コンストラクタ引数からのテンプレート引数推定を許してくれればいい感じのができそうなんだが
autoが許可されないのと同じで無理そう
autoが許可されないのと同じで無理そう
178デフォルトの名無しさん
2019/01/26(土) 11:54:28.30ID:UuAHSy+r 変数と同じ名前の関数の作成を許可するだけで良い気がする。
クラス外からは関数優先で解決して、クラス内からは変数優先で解決みたいな。
クラス外からは関数優先で解決して、クラス内からは変数優先で解決みたいな。
179デフォルトの名無しさん
2019/01/26(土) 12:43:50.56ID:bIuYL8G2 コピコンや代入とも相性悪そう…
プロパティーはプロパティーだけで完結するならまだ良いが、
読み書き可能なプロパティーが別途存在するデータメンバと関係を持っていたりしたら、
プロパティーAとその実体の一部を構成するところのデータメンバBのコピー順順序が非常に取り扱いにくいことに…
C#とかで大手を振ってプロパティーが導入できているのは奴らのクラスが参照型であることと無関係ではないと思う
(C++/CXは忘却の彼方なので忘れた;
プロパティーはプロパティーだけで完結するならまだ良いが、
読み書き可能なプロパティーが別途存在するデータメンバと関係を持っていたりしたら、
プロパティーAとその実体の一部を構成するところのデータメンバBのコピー順順序が非常に取り扱いにくいことに…
C#とかで大手を振ってプロパティーが導入できているのは奴らのクラスが参照型であることと無関係ではないと思う
(C++/CXは忘却の彼方なので忘れた;
180デフォルトの名無しさん
2019/01/26(土) 12:52:15.23ID:bIuYL8G2 ていうかC++/CXのコードを今見直したらバッキングストアとしてのデータメンバBの存在を必ず仮定しており、
コピーはBのみ行う仕様らしい
これの仕様ではプロパティーAのコードを他クラスのオブジェクトと関係を持つような書き方をされたとき、コピー時に破綻する
ウィンドーズホンでネイティブC++とC#の橋渡しでしか使わない機能なので今まであんま深く考えてなかった;;
コピーはBのみ行う仕様らしい
これの仕様ではプロパティーAのコードを他クラスのオブジェクトと関係を持つような書き方をされたとき、コピー時に破綻する
ウィンドーズホンでネイティブC++とC#の橋渡しでしか使わない機能なので今まであんま深く考えてなかった;;
181デフォルトの名無しさん
2019/01/26(土) 12:55:48.33ID:lXnCadeF >>175
とりあえずエラーにしとけばいいんじゃね
>>176
とりあえずC++Builderみたいな方式でいいんじゃね
http://support.embarcadero.com/jp/article/35947
とりあえずエラーにしとけばいいんじゃね
>>176
とりあえずC++Builderみたいな方式でいいんじゃね
http://support.embarcadero.com/jp/article/35947
182デフォルトの名無しさん
2019/01/26(土) 13:05:26.17ID:xGyN5S0n 存在しないプロパティの話はもういいいいいいいいいいいいいいいい
183デフォルトの名無しさん
2019/01/26(土) 13:08:30.94ID:bIuYL8G2184デフォルトの名無しさん
2019/01/26(土) 13:27:11.25ID:ZArwr6Ji std::arrayの実態はスタック領域に格納されるの?
高機能配列と考えてよければ生配列使いたくない
高機能配列と考えてよければ生配列使いたくない
185デフォルトの名無しさん
2019/01/26(土) 13:35:18.29ID:IW4Z4Y6+ C#のgetsetなんでパクらないの?
186デフォルトの名無しさん
2019/01/26(土) 13:50:54.53ID:VUJQK2E4 実装
187デフォルトの名無しさん
2019/01/26(土) 13:51:38.09ID:VUJQK2E4 実装依存だけどひーぷ
188デフォルトの名無しさん
2019/01/26(土) 14:01:13.68ID:mG/AnkbD189デフォルトの名無しさん
2019/01/26(土) 14:41:57.45ID:xGyN5S0n190はちみつ餃子 ◆8X2XSCHEME
2019/01/26(土) 15:02:57.27ID:ixrTaENi191はちみつ餃子 ◆8X2XSCHEME
2019/01/26(土) 15:03:42.60ID:ixrTaENi このスレではプロパティとか #pragma once が何度でも蒸し返されるけど、
そんなに簡単に出来ることならやっとるわ。
出来ないか、出来るとしても割に合わんという判断があるからやってないの。
そんなに簡単に出来ることならやっとるわ。
出来ないか、出来るとしても割に合わんという判断があるからやってないの。
192デフォルトの名無しさん
2019/01/26(土) 15:06:49.78ID:xGyN5S0n そりゃこのスレにプログラミング言語の専門家いないし
理論も実装も知りません
理論も実装も知りません
193デフォルトの名無しさん
2019/01/26(土) 16:31:28.38ID:YyqpBypo194デフォルトの名無しさん
2019/01/26(土) 16:39:59.85ID:stTjLhtD 時々言語仕様の話になる現象何なの。
196デフォルトの名無しさん
2019/01/26(土) 19:03:05.70ID:YyqpBypo 俺何度かプロパティに関する議論参加したけど、はちみつが
事実に即した採用されない理由を説明した場面を見たことないよ、勝手な妄想くっちゃべってるところは見たが
事実に即した採用されない理由を説明した場面を見たことないよ、勝手な妄想くっちゃべってるところは見たが
197はちみつ餃子 ◆8X2XSCHEME
2019/01/26(土) 19:05:00.12ID:ixrTaENi そうか。
198デフォルトの名無しさん
2019/01/27(日) 00:16:21.08ID:Br2P5aSl 採用されるべき理由を説明した人も居ないけどな
俺が欲しいから以外の理由を見たことがない
俺が欲しいから以外の理由を見たことがない
199デフォルトの名無しさん
2019/01/27(日) 00:45:15.54ID:8lOUNKLd 採用されるべき理由なんてあると便利だからでいいんだよ
そこに入るツッコミの数々に耐え抜いたものだけが標準入りするだけ
そこに入るツッコミの数々に耐え抜いたものだけが標準入りするだけ
200デフォルトの名無しさん
2019/01/27(日) 00:46:42.48ID:UseBSW0P 別にあーでもないこーでもないと議論する分にはいいだろ、ってことだよ
蒸し返すとか何様だ、と。
結構有意義な話(テンプレートでそれっぽいものを実現する試みとか)もあったしな
蒸し返すとか何様だ、と。
結構有意義な話(テンプレートでそれっぽいものを実現する試みとか)もあったしな
201デフォルトの名無しさん
2019/01/27(日) 00:49:33.88ID:uLg7jbtK つーかそんなにC#風のプロパティつかいたいなら素直にC#つかっとけ、みたいな
「なんでC#風のプロパティがないんだよ!」って言ってるやつを野放しにしておくと
そのうち「そもそも言語仕様でガベージコレクションが無いのがおかしい」とか
「今時テキストのソースから直にネイティブコードにコンパイルするのは設計が古い!
一旦中間コードにしてJITで実行するスタイルにすべき!」とか言いだすからな
「なんでC#風のプロパティがないんだよ!」って言ってるやつを野放しにしておくと
そのうち「そもそも言語仕様でガベージコレクションが無いのがおかしい」とか
「今時テキストのソースから直にネイティブコードにコンパイルするのは設計が古い!
一旦中間コードにしてJITで実行するスタイルにすべき!」とか言いだすからな
202デフォルトの名無しさん
2019/01/27(日) 00:52:46.05ID:Br2P5aSl203デフォルトの名無しさん
2019/01/27(日) 00:53:56.73ID:2l9KjIWi 確かにな
ラムダ式でもそういう論調だった
ラムダ式でもそういう論調だった
204デフォルトの名無しさん
2019/01/27(日) 01:03:48.51ID:UseBSW0P gcが無いのは理由はっきりしてるだろ
ゼロオーバーヘッドに反しない方法で実装するのは困難だと
ゼロオーバーヘッドに反しない方法で実装するのは困難だと
205はちみつ餃子 ◆8X2XSCHEME
2019/01/27(日) 01:06:02.76ID:1QlbAeGp まあ蒸し返してる人も、過去の話に納得いかなくて蒸し返してるわけじゃなくて
新しくやってきた人なんだろうと思うけど、以前から見てるとまあうんざりするってのは
わかって欲しい。
新しくやってきた人なんだろうと思うけど、以前から見てるとまあうんざりするってのは
わかって欲しい。
206デフォルトの名無しさん
2019/01/27(日) 01:10:03.22ID:RXDbyT6p だったら議論内容をスレタイにでも入れれば?
207はちみつ餃子 ◆8X2XSCHEME
2019/01/27(日) 01:12:18.91ID:1QlbAeGp >>200
プロキシクラスでプロパティっぽいものを作るやつのこと?
それももういいかげんしつこいくらい繰返されたネタで、
もういっぺん取り上げても有意義な要素はなんもない。
個人的には、 opaque alias と組み合わせればより
プロパティっぽいものに近づける可能性はあるかもな
とは思ってるけど。
プロキシクラスでプロパティっぽいものを作るやつのこと?
それももういいかげんしつこいくらい繰返されたネタで、
もういっぺん取り上げても有意義な要素はなんもない。
個人的には、 opaque alias と組み合わせればより
プロパティっぽいものに近づける可能性はあるかもな
とは思ってるけど。
208デフォルトの名無しさん
2019/01/27(日) 08:10:25.76ID:c/5YNENH >>198
オブジェクトに付随する直接アクセスしたくなる変数とはプロパティなのだから、関数を介して公開せよという前にプロパティ型があれば頑強になるって事だろね。
オブジェクトに付随する直接アクセスしたくなる変数とはプロパティなのだから、関数を介して公開せよという前にプロパティ型があれば頑強になるって事だろね。
209デフォルトの名無しさん
2019/01/27(日) 09:52:06.44ID:66i7lFVh210デフォルトの名無しさん
2019/01/27(日) 10:01:16.61ID:5DHtGtFO うんざりだとか言ってる奴らの方がウザイ件
211デフォルトの名無しさん
2019/01/27(日) 11:06:12.21ID:un/kMxTa >>210
数億年前からスレに居る生きた化石なので尊重せよ
数億年前からスレに居る生きた化石なので尊重せよ
212デフォルトの名無しさん
2019/01/27(日) 11:21:12.79ID:un/kMxTa で、やっぱプロパティー実装するんなら
オブジェクトxのプロパティーy(yの型はt)のアドレスp取った時点でIDかなんかを発行して、
*pへの読み書きで(IDかなんかを通して)x.yの読み書きに変換されないと嘘だよねと、
(カプセル化の原則により、クラスyの利用者はデータメンバとプロパティーの区別とかいちいちしてくんないのが前提
C++/CXのは「区別してくれ!」という中途半端仕様である…
もちろんpの加減算は、sizeof(t)バイト分の加減算に変換されねばならない
pがt*の変数に代入されたりpの配列なんか作られた日にはもう最悪で、
t* q = p;
*q = (t)1234; // !!!!(A)
t* some_array[3] = { &x1.y, &x2.y, &x3.y };
*(some_array[0]) = (t)1000; // !!!!(B)
とかされたときどういうコードを吐けば良いんじゃ…
もはや従来の生ポインタは生ポインタだけで済まなくなり、
IDなのかポインタなのかを区別するフラグが従来の生ポインタに付加されねばならない
ポインタ(に見えねばならないp)に対するアライメントの設定がまだ規格化されていないのは不幸中の幸いであった
オブジェクトxのプロパティーy(yの型はt)のアドレスp取った時点でIDかなんかを発行して、
*pへの読み書きで(IDかなんかを通して)x.yの読み書きに変換されないと嘘だよねと、
(カプセル化の原則により、クラスyの利用者はデータメンバとプロパティーの区別とかいちいちしてくんないのが前提
C++/CXのは「区別してくれ!」という中途半端仕様である…
もちろんpの加減算は、sizeof(t)バイト分の加減算に変換されねばならない
pがt*の変数に代入されたりpの配列なんか作られた日にはもう最悪で、
t* q = p;
*q = (t)1234; // !!!!(A)
t* some_array[3] = { &x1.y, &x2.y, &x3.y };
*(some_array[0]) = (t)1000; // !!!!(B)
とかされたときどういうコードを吐けば良いんじゃ…
もはや従来の生ポインタは生ポインタだけで済まなくなり、
IDなのかポインタなのかを区別するフラグが従来の生ポインタに付加されねばならない
ポインタ(に見えねばならないp)に対するアライメントの設定がまだ規格化されていないのは不幸中の幸いであった
213デフォルトの名無しさん
2019/01/27(日) 11:30:27.56ID:c/5YNENH 言い訳ばかりで使えねーなお前ら。
214デフォルトの名無しさん
2019/01/27(日) 11:36:02.94ID:ODbeTmQz じゃあ君が素晴らしい解決策を考え出して委員会に提案すれば?
デフォルト比較演算子の問題をspaceship operatorの導入で解決したみたいにな
アイデアはいつでも歓迎されてるぞ
デフォルト比較演算子の問題をspaceship operatorの導入で解決したみたいにな
アイデアはいつでも歓迎されてるぞ
215デフォルトの名無しさん
2019/01/27(日) 11:39:24.94ID:2l9KjIWi perlではよく見る <=>
それだったら 真似たから解決した じゃね
それだったら 真似たから解決した じゃね
216デフォルトの名無しさん
2019/01/27(日) 11:49:20.75ID:8lOUNKLd C++の宇宙船演算子、とてもよく出来てる
ルーツは他言語だけど単純に真似ただけ、というわけではない
ルーツは他言語だけど単純に真似ただけ、というわけではない
217はちみつ餃子 ◆8X2XSCHEME
2019/01/27(日) 13:54:08.60ID:1QlbAeGp プロパティとは何かというのがそもそもなんだかバラバラな意見だったりするんよ。
私は「ふたつの関数の組にしたもの (またはひとつの関数) を変数として抽象化 (見せかけ) したもの」
と考えていて、それが結果的に変数へのアクセサ・モディファイアとしてして機能し得る、
更にそれによってアクセスコントロールできるというのは用途のひとつに過ぎないと思う。
だから >>178 みたいな意見はスコープが小さすぎて割に合わないと思う。
もしプロパティが導入されるとしたら、クラスの外から見る限りでは変数と区別が
つかないようになっているべきだと思うのだが、 >>212 のような問題はあるし、
テンプレートでの推論ルールとかも考え始めると
まともなルールを決めるのはほとんど無理だと思えてくる。
「変数に見せかける」のは中途半端でいいから「プロパティ」が欲しいというような >>208
のような立場は一見して比較的に楽 (既存のルールを考えずに新しいものが増える) だが、
逆に言えば今まで無かった変数カテゴリが出現するわけなのでそれはそれで
既存の機能 (特にライブラリ) と辻褄を合わせるのはなかなか大変そうだ。
そういった部分を勘案して、あえてプロパティと呼べるようなものを導入するのだとしたら、
プロキシクラスによって実現することを軸にした上で
それで実現しきれない部分を埋めていくというアプローチが妥当だと思う。
前述 (>>207) のように、 opaque alias は有用な機能だろう。
な〜んか、「思う」って言いすぎな気がするけど、
「思う」って言っとかないとまた「勝手に委員会を代弁している!」とか言い出すから、
明示的に「思う」って書いておくことにする。
私は「ふたつの関数の組にしたもの (またはひとつの関数) を変数として抽象化 (見せかけ) したもの」
と考えていて、それが結果的に変数へのアクセサ・モディファイアとしてして機能し得る、
更にそれによってアクセスコントロールできるというのは用途のひとつに過ぎないと思う。
だから >>178 みたいな意見はスコープが小さすぎて割に合わないと思う。
もしプロパティが導入されるとしたら、クラスの外から見る限りでは変数と区別が
つかないようになっているべきだと思うのだが、 >>212 のような問題はあるし、
テンプレートでの推論ルールとかも考え始めると
まともなルールを決めるのはほとんど無理だと思えてくる。
「変数に見せかける」のは中途半端でいいから「プロパティ」が欲しいというような >>208
のような立場は一見して比較的に楽 (既存のルールを考えずに新しいものが増える) だが、
逆に言えば今まで無かった変数カテゴリが出現するわけなのでそれはそれで
既存の機能 (特にライブラリ) と辻褄を合わせるのはなかなか大変そうだ。
そういった部分を勘案して、あえてプロパティと呼べるようなものを導入するのだとしたら、
プロキシクラスによって実現することを軸にした上で
それで実現しきれない部分を埋めていくというアプローチが妥当だと思う。
前述 (>>207) のように、 opaque alias は有用な機能だろう。
な〜んか、「思う」って言いすぎな気がするけど、
「思う」って言っとかないとまた「勝手に委員会を代弁している!」とか言い出すから、
明示的に「思う」って書いておくことにする。
218デフォルトの名無しさん
2019/01/27(日) 14:01:58.46ID:eq6vjzxS >>208
>プロパティ型
いじっていい変数ならプロパティクラス作って明示すればいいだけじゃねえの
class A
{
public:
CPropety<int> i;
CProperty<double > d;
};
main()
{
A a;
a.i=10;
a.d=0.0;
}
>プロパティ型
いじっていい変数ならプロパティクラス作って明示すればいいだけじゃねえの
class A
{
public:
CPropety<int> i;
CProperty<double > d;
};
main()
{
A a;
a.i=10;
a.d=0.0;
}
219デフォルトの名無しさん
2019/01/27(日) 14:05:45.29ID:ODbeTmQz class A
{
public:
// 別々のgetterとsetterを付けたい
CPropety<int> i;
CPropety<int> j;
};
どうすんのさ
書き込む前に少しくらい考えようよ
{
public:
// 別々のgetterとsetterを付けたい
CPropety<int> i;
CPropety<int> j;
};
どうすんのさ
書き込む前に少しくらい考えようよ
220デフォルトの名無しさん
2019/01/27(日) 14:16:19.49ID:eq6vjzxS >>219
オーバーロードしたらあかんの
CPropety<int> Ci {setter, getter}
CPropety<int> Cj {setter, getter}
class A
{
Ci i;
Cj j;
}
オーバーロードしたらあかんの
CPropety<int> Ci {setter, getter}
CPropety<int> Cj {setter, getter}
class A
{
Ci i;
Cj j;
}
221デフォルトの名無しさん
2019/01/27(日) 14:18:42.56ID:ODbeTmQz そのCiとかCjは一体何なんだよ
クラスか?関数か?ぼくのかんがえたあたらしいプロパティプリミティブなのか?
考えて書け
クラスか?関数か?ぼくのかんがえたあたらしいプロパティプリミティブなのか?
考えて書け
222デフォルトの名無しさん
2019/01/27(日) 14:26:38.19ID:eq6vjzxS >>221
ぼくのかんがえたなんちゃらだよ
あたらしいかどうかしらんが
ちょっと書き方間違えてたな
class Ci: CProperty<int>{ setter,getter}
class Cj: CProperty<int>{ setter,getter}
これでどうだ
ぼくのかんがえたなんちゃらだよ
あたらしいかどうかしらんが
ちょっと書き方間違えてたな
class Ci: CProperty<int>{ setter,getter}
class Cj: CProperty<int>{ setter,getter}
これでどうだ
223デフォルトの名無しさん
2019/01/27(日) 15:41:24.57ID:QVcPa6hj224デフォルトの名無しさん
2019/01/27(日) 16:00:58.63ID:8RlUJd7m まぁ、親クラスのメンバにアクセスしたくなることはけっこうあるけどねw
225223
2019/01/27(日) 16:57:18.32ID:ZgdL6mkb いや、単にこういう話
CPropety<std::string> Cs {setter, getter};
Cs = "hogehoge"; // これは出来ても
size_t n = Cs.size(); // これは無理
まぁプロパティ絶対要る、って言いたいわけじゃないけどさ
>>189の言うようにあれば使う程度だけど
CPropety<std::string> Cs {setter, getter};
Cs = "hogehoge"; // これは出来ても
size_t n = Cs.size(); // これは無理
まぁプロパティ絶対要る、って言いたいわけじゃないけどさ
>>189の言うようにあれば使う程度だけど
226デフォルトの名無しさん
2019/01/27(日) 17:05:46.66ID:CCjvW4Nh リフレクションがないのにプロパティだけあっても意味ないだろう
227デフォルトの名無しさん
2019/01/27(日) 17:28:45.73ID:+XT4q6a0 一般に「プロパティ」と言ったとき
- 変数メンバと同じ字面でアクセスできる
- 列挙可能
C#は両方実現してるけどJavaBeansだと後者だけだね。
C++で話題に挙がるのは専ら前者の性質だけのような気がするが、確かに
それだけだとあまり意味がないと思う。
- 変数メンバと同じ字面でアクセスできる
- 列挙可能
C#は両方実現してるけどJavaBeansだと後者だけだね。
C++で話題に挙がるのは専ら前者の性質だけのような気がするが、確かに
それだけだとあまり意味がないと思う。
228デフォルトの名無しさん
2019/01/27(日) 19:36:10.69ID:ZgdL6mkb リフレクション知らんかったので調べてみたけど
ttps://ufcpp.net/study/csharp/sp_reflection.html
ファイルから読んだ内容から動的にクラスを作ったりできる、で合ってるだろうか?
確かにプロパティが欲しくなる場面って設定ファイルの読み書きとかだから、
そういうファイルと言語の橋渡しの機能が無いと片手落ちだというのはわかる気がする(合ってるか知らんけど
仮にINIファイルに対する読み書きを自動化するとして
[Key]
value = ほげほげ
というhoge.iniがあったときに
Ini hoge_ini("hoge.ini");
hoge_ini.Key.value = "ふがふが";
みたいなことが、C++でも出来なくはないけど(そのINIファイルに相当するクラスを手動で書けば)・・・
言語に取り入れようとしたら静的型付けやテンプレートとは死ぬほど相性悪いから無理だろうなぁ
ttps://ufcpp.net/study/csharp/sp_reflection.html
ファイルから読んだ内容から動的にクラスを作ったりできる、で合ってるだろうか?
確かにプロパティが欲しくなる場面って設定ファイルの読み書きとかだから、
そういうファイルと言語の橋渡しの機能が無いと片手落ちだというのはわかる気がする(合ってるか知らんけど
仮にINIファイルに対する読み書きを自動化するとして
[Key]
value = ほげほげ
というhoge.iniがあったときに
Ini hoge_ini("hoge.ini");
hoge_ini.Key.value = "ふがふが";
みたいなことが、C++でも出来なくはないけど(そのINIファイルに相当するクラスを手動で書けば)・・・
言語に取り入れようとしたら静的型付けやテンプレートとは死ぬほど相性悪いから無理だろうなぁ
229デフォルトの名無しさん
2019/01/27(日) 19:45:08.53ID:c/5YNENH 気合で何とか。
230デフォルトの名無しさん
2019/01/27(日) 19:59:29.75ID:RXDbyT6p 使ってるエディタにプロパティージェネレート機能でも入れれば?
それくらいしょうもない話。
それくらいしょうもない話。
231デフォルトの名無しさん
2019/01/27(日) 20:02:24.90ID:8lOUNKLd そのうち入る静的なリフレクションで十分用はたせそう
プロパティが実現するかは知らんが
プロパティが実現するかは知らんが
232デフォルトの名無しさん
2019/01/27(日) 20:04:51.92ID:Br2P5aSl プリプロセッサ強化しただけ
233デフォルトの名無しさん
2019/01/27(日) 22:48:48.02ID:biLrTPET メタプログラミング・オープンクラスなど、Ruby が遅い理由
obj.f( )
インスタンスの型が動的だから、obj の型と、メソッドf を毎回チェックするから、遅い
ほとんどのケースで、メソッドが変化しないのだから、
インスタンスをfreeze するとか、
JIT の予測分岐みたいなものを採用しないといけない
obj.f( )
インスタンスの型が動的だから、obj の型と、メソッドf を毎回チェックするから、遅い
ほとんどのケースで、メソッドが変化しないのだから、
インスタンスをfreeze するとか、
JIT の予測分岐みたいなものを採用しないといけない
234デフォルトの名無しさん
2019/01/27(日) 22:50:00.96ID:mMLi4Nw2 C++でテストは何を使用してる?
BoostTest?
GoogleTest?
VC++のネイティブC++Test?
そもそもテストは作成しない?
BoostTest?
GoogleTest?
VC++のネイティブC++Test?
そもそもテストは作成しない?
235デフォルトの名無しさん
2019/01/27(日) 22:58:11.13ID:ZSGm5vTO みなさん、そんなに高度なプログラム書いてるんですか?
集団開発してる人間としてはちょっと信じられない。趣味でやるならわかるけど。
集団開発してる人間としてはちょっと信じられない。趣味でやるならわかるけど。
236デフォルトの名無しさん
2019/01/27(日) 23:00:26.40ID:ZSGm5vTO 商用だけどparasoftのC++Test使ってて、なかなかいいですよ
237デフォルトの名無しさん
2019/01/27(日) 23:02:22.43ID:2bDlyD0p 昔はSoftIceとBoundsChecker使っていたけど
238デフォルトの名無しさん
2019/01/27(日) 23:08:30.18ID:24JMkTQP テストは基本手動で確認でしょう
239デフォルトの名無しさん
2019/01/27(日) 23:12:29.52ID:RXDbyT6p googletest使ってる。準備しやすいし、そこそこ信用できるから。
240デフォルトの名無しさん
2019/01/27(日) 23:12:43.73ID:8lOUNKLd VC++のネイティブテスト使ってる
しかしGithubあたりでCIするには相性よろしくない・・・
しかしGithubあたりでCIするには相性よろしくない・・・
241デフォルトの名無しさん
2019/01/27(日) 23:20:00.64ID:Br2P5aSl テストなんか手で書こうがフレームワーク使おうが同じ
242デフォルトの名無しさん
2019/01/28(月) 02:32:45.22ID:3CrwaDYk >>234
ライブラリのように汎用性の高いものは、テスト用のプロジェクト作ってる(そういうのは大体テンプレ使っててビルドに時間を食われるので)。
実装コードの単体テスは、main のド頭で起動時に必ず実行(リリース時は外す)。
専用ツールの必要性を感じた事がないです。
ライブラリのように汎用性の高いものは、テスト用のプロジェクト作ってる(そういうのは大体テンプレ使っててビルドに時間を食われるので)。
実装コードの単体テスは、main のド頭で起動時に必ず実行(リリース時は外す)。
専用ツールの必要性を感じた事がないです。
243デフォルトの名無しさん
2019/01/28(月) 07:11:36.24ID:i7DZcl3V MyClass c;
と
MyClass* c = new MyClass();
は何が違うんですか?
クラスはnewしないと使えないと書いてあるサイトもありますが上記の表記でも使えているようです
と
MyClass* c = new MyClass();
は何が違うんですか?
クラスはnewしないと使えないと書いてあるサイトもありますが上記の表記でも使えているようです
244デフォルトの名無しさん
2019/01/28(月) 07:24:44.89ID:EQR7aoi9 「スタック ヒープ」でググっといで
245デフォルトの名無しさん
2019/01/28(月) 07:24:45.02ID:sAOHdtTv 質問させて
以下のコードで関数functionの引数にクラスhogeのインスタンスのみを受け付けるようにするにはどうしたらいい?
template<typename T>
class hoge {
省略
};
template<typename T>
class fuga {
省略
};
template<ここがわからない>
hogehoge function(わらないclass hoge のインスタンスのみを受け付けたい)
{
省略
}
以下のコードで関数functionの引数にクラスhogeのインスタンスのみを受け付けるようにするにはどうしたらいい?
template<typename T>
class hoge {
省略
};
template<typename T>
class fuga {
省略
};
template<ここがわからない>
hogehoge function(わらないclass hoge のインスタンスのみを受け付けたい)
{
省略
}
246デフォルトの名無しさん
2019/01/28(月) 07:24:53.78ID:i7DZcl3V すみません、使うメモリ管理の方法が違うということなんですね
では、メモリ使用量をほとんど気にしなくていいPC用アプリの場合はnewを使うのは配列を作るときくらいでしょうか?
では、メモリ使用量をほとんど気にしなくていいPC用アプリの場合はnewを使うのは配列を作るときくらいでしょうか?
247デフォルトの名無しさん
2019/01/28(月) 07:29:06.39ID:EQR7aoi9 template<typename T>
hogehoge function(hoge<T> h)
{}
hogehoge function(hoge<T> h)
{}
248デフォルトの名無しさん
2019/01/28(月) 07:46:48.21ID:SfbWAPdM249デフォルトの名無しさん
2019/01/28(月) 07:50:40.23ID:i7DZcl3V250デフォルトの名無しさん
2019/01/28(月) 07:52:22.02ID:rMzIHoqv251デフォルトの名無しさん
2019/01/28(月) 10:26:04.99ID:zheEgWgK252デフォルトの名無しさん
2019/01/28(月) 11:15:40.31ID:ZoLOGP13 すまぽ使う場合って明示的にdeleteはしないんですか?
253デフォルトの名無しさん
2019/01/28(月) 11:21:32.36ID:6rt4c1kU 内部で明示的にdeleteされてます
254デフォルトの名無しさん
2019/01/28(月) 12:04:58.06ID:FhzO2Cs0 中に人がいるってことですか?
255デフォルトの名無しさん
2019/01/28(月) 12:18:45.84ID:Pe4cCHSm sumapoってさ
参照カウント処理はアトミックなの?
シングルスレッドのときにオーバーヘッドは問題ないの?
参照カウント処理はアトミックなの?
シングルスレッドのときにオーバーヘッドは問題ないの?
256デフォルトの名無しさん
2019/01/28(月) 12:35:54.44ID:zheEgWgK shared_ptrかunique_ptrかで違う
パフォーマンス気にするなら自分で計測しろ
パフォーマンス気にするなら自分で計測しろ
257デフォルトの名無しさん
2019/01/28(月) 12:51:46.26ID:4hOio++r さすがに今時アトミックなインクリメントをネイティブにサポートしてないようなCPUは考慮不要だろ
そんなゴミデバイスをターゲットにした開発でスマポなんか使うとは思えん
そんなゴミデバイスをターゲットにした開発でスマポなんか使うとは思えん
258デフォルトの名無しさん
2019/01/28(月) 12:52:40.84ID:yOibm1qy >>251
>ただし今時生で使うのはご法度なのでスマポで使う
そんなことない。C++ の本流は今でも生ポインタ。
ポインタは理解できない人が多くて、そういう人が嫌いがちなだけ。
それは彼女自身が理解できないから。
>ただし今時生で使うのはご法度なのでスマポで使う
そんなことない。C++ の本流は今でも生ポインタ。
ポインタは理解できない人が多くて、そういう人が嫌いがちなだけ。
それは彼女自身が理解できないから。
259デフォルトの名無しさん
2019/01/28(月) 13:06:48.75ID:ji//xT0N そやな
260デフォルトの名無しさん
2019/01/28(月) 13:20:55.77ID:4hOio++r そもそも有効範囲を把握できなくなるような行方不明オブジェクトなんかそんなに必要になるかね
GC言語でもそんなの滅多にないわ
大抵のケースではオブジェクトの生存期間と一致する適当な親玉クラスが存在するから、そいつがまとめて掃除するように作るだろ
GC言語でもそんなの滅多にないわ
大抵のケースではオブジェクトの生存期間と一致する適当な親玉クラスが存在するから、そいつがまとめて掃除するように作るだろ
261デフォルトの名無しさん
2019/01/28(月) 14:17:08.44ID:XpM1DMeN 彼女?
262デフォルトの名無しさん
2019/01/28(月) 14:23:26.09ID:sZicpJ+d 本流が何を指すのかよく分からないが個人的な観測範囲ではスマポ推奨する人間の方が多い
大体ポインタ理解した所でヒューマンエラーが防げる訳じゃないんだからスマポに頼るほうが結果的に楽だと思うがなぁ
大体ポインタ理解した所でヒューマンエラーが防げる訳じゃないんだからスマポに頼るほうが結果的に楽だと思うがなぁ
263デフォルトの名無しさん
2019/01/28(月) 14:40:06.30ID:pZ9xHEQJ いっさいdeleteしないという方針にするならわかるけど混ざるのは嫌だね
いざというときの安全策というのでは曖昧すぎ
いざというときの安全策というのでは曖昧すぎ
264デフォルトの名無しさん
2019/01/28(月) 15:18:30.76ID:VEGJrOTQ RAIIとかデストラクタ書くのめんどいとかでスマポよく使うけど
それでもファクトリ?パターンとか生存期間の明確な管理をすべき場面、戻り値の共変性のために
そこそこ生ポ使うけどな
生ポがご法度とか、お前ご法度言いたいだけちゃうんかと
それでもファクトリ?パターンとか生存期間の明確な管理をすべき場面、戻り値の共変性のために
そこそこ生ポ使うけどな
生ポがご法度とか、お前ご法度言いたいだけちゃうんかと
265デフォルトの名無しさん
2019/01/28(月) 15:25:11.18ID:sZicpJ+d そりゃdeleteはしない方針ですよスマポ使うんだから
deleteだって言ってるからメモリアドレスを扱いたいのではなくヒープ確保の結果であるポインタとして話をするね
ライフタイム全部管理し切る自信があって、ムーブとか書くのがめんどくさいってんなら生ポでも良いと思う
ただ人間そんなに優秀じゃないので必然性に迫られない限りスマポ使う方が大多数には向いてるし、ヒープ確保の結果としてのポインタが生ポインタである必然性ってそうそう出会わなくない?
(有るなら具体例を示して貰えるととても有難い)
deleteだって言ってるからメモリアドレスを扱いたいのではなくヒープ確保の結果であるポインタとして話をするね
ライフタイム全部管理し切る自信があって、ムーブとか書くのがめんどくさいってんなら生ポでも良いと思う
ただ人間そんなに優秀じゃないので必然性に迫られない限りスマポ使う方が大多数には向いてるし、ヒープ確保の結果としてのポインタが生ポインタである必然性ってそうそう出会わなくない?
(有るなら具体例を示して貰えるととても有難い)
266デフォルトの名無しさん
2019/01/28(月) 15:30:59.26ID:3CrwaDYk 親玉クラスに任せられない時は、実体管理用のクラス作ってるわ。
何とかFactoryって。仮想クラスはオブジェクトスライシングを避けるためにも基本参照でしか使わん。
いい加減ガベコレつけろよ、と。
何とかFactoryって。仮想クラスはオブジェクトスライシングを避けるためにも基本参照でしか使わん。
いい加減ガベコレつけろよ、と。
267デフォルトの名無しさん
2019/01/28(月) 16:06:58.04ID:sZicpJ+d factoryがunique_ptrじゃだめな場面ってそんなに多いんですかね
268デフォルトの名無しさん
2019/01/28(月) 16:34:44.00ID:yOibm1qy そもそも boost や STL って、C++をC++でなくしてしまうことがある
奇妙で変なライブラリだ。
奇妙で変なライブラリだ。
269デフォルトの名無しさん
2019/01/28(月) 16:36:58.41ID:jKaiFfBH なんか、C++をスクリプト言語化したい人の集まりみたいになってる。
JS や Python みたいな書き方のまま、C++ の速度だけが得られることが
彼らの希望のように思える。
JS や Python みたいな書き方のまま、C++ の速度だけが得られることが
彼らの希望のように思える。
270デフォルトの名無しさん
2019/01/28(月) 17:00:48.06ID:6rt4c1kU 何言ってるんっだこいつ
271デフォルトの名無しさん
2019/01/28(月) 17:10:28.91ID:eIQ8PC4T そういう言語じゃないの?
The Real Stroustrup Interviewで
> I designed C++ so programmers could write code that is both elegant and efficient.
って言ってるけど
The Real Stroustrup Interviewで
> I designed C++ so programmers could write code that is both elegant and efficient.
って言ってるけど
272デフォルトの名無しさん
2019/01/28(月) 17:37:02.66ID:ehhV00bD273デフォルトの名無しさん
2019/01/28(月) 17:57:23.32ID:yOibm1qy >>271
Stroustrup の定義した C++ は結構美しかったんだよ。
boost と stl によってはものすごく汚くなった。
C++ 98 位でが本当の C++ で、それより後は C++ ではないと思う。
Stroustrup の定義した C++ は結構美しかったんだよ。
boost と stl によってはものすごく汚くなった。
C++ 98 位でが本当の C++ で、それより後は C++ ではないと思う。
274デフォルトの名無しさん
2019/01/28(月) 18:01:22.30ID:6rt4c1kU ぼくが考える最強のC++
275デフォルトの名無しさん
2019/01/28(月) 18:13:41.58ID:yOibm1qy 口だけ達者だからな。スクリプター達は。。。
276デフォルトの名無しさん
2019/01/28(月) 18:30:57.19ID:6rt4c1kU >>275
お前のことだぞ
お前のことだぞ
277デフォルトの名無しさん
2019/01/28(月) 18:32:51.86ID:sZicpJ+d278デフォルトの名無しさん
2019/01/28(月) 18:39:44.25ID:jKaiFfBH というか、スクリプターの方がバイナリ・プログラマより圧倒的に多いので
(スクリプト言語の方が習得が簡単なためだと考えられている)、
どうしたってこうなっちゃうな。
でもC++の厳格な書き方は、大きなプログラムを書くときには便利なんだけどね。
(スクリプト言語の方が習得が簡単なためだと考えられている)、
どうしたってこうなっちゃうな。
でもC++の厳格な書き方は、大きなプログラムを書くときには便利なんだけどね。
279デフォルトの名無しさん
2019/01/28(月) 18:40:38.89ID:6rt4c1kU ????
何を言ってるのか分からんのだが
何を言ってるのか分からんのだが
280デフォルトの名無しさん
2019/01/28(月) 18:42:34.38ID:ehhV00bD281デフォルトの名無しさん
2019/01/28(月) 18:45:57.76ID:tKT6HQoa 美しいとかそんなのどうでもいいんだよ!
C++ってのはなぁ、戦略爆撃機に例えるとB52なんだよ
基本設計は大昔すぎて今となっては古くさい
後付けでゴチャゴチャと魔改造やりすぎたせいで
今時の若造が見ると「なんでもっとスマートにできないのか」って言う
だがな、こいつは戦争の道具なんだ
たかがちんけな美学のために性能や機能は犠牲にしない
必要とあれば何でも貪欲に付けたしていくがそれは時代に迎合したいからではなく
仕事に必要だからやるだけだ
そんなプロフェッショナルのための戦争の道具、それがC++だ!
C++ってのはなぁ、戦略爆撃機に例えるとB52なんだよ
基本設計は大昔すぎて今となっては古くさい
後付けでゴチャゴチャと魔改造やりすぎたせいで
今時の若造が見ると「なんでもっとスマートにできないのか」って言う
だがな、こいつは戦争の道具なんだ
たかがちんけな美学のために性能や機能は犠牲にしない
必要とあれば何でも貪欲に付けたしていくがそれは時代に迎合したいからではなく
仕事に必要だからやるだけだ
そんなプロフェッショナルのための戦争の道具、それがC++だ!
282デフォルトの名無しさん
2019/01/28(月) 18:48:22.51ID:m1mrBSmH283デフォルトの名無しさん
2019/01/28(月) 19:15:51.56ID:E4+rgmE7284デフォルトの名無しさん
2019/01/28(月) 19:20:45.82ID:8pg5nSAS イミュータボォなヴァリューオブジェクトを実装するときにコピコン使うかスマポ使うか悩む
285デフォルトの名無しさん
2019/01/28(月) 19:46:05.45ID:zheEgWgK 例外安全性考えたらスマポ使わないでやるのは地獄
生ポとかいってるやつはどうせリークしまくりコード書いてるだろ
たとえ例外オフにしてたとしてもな
生ポとかいってるやつはどうせリークしまくりコード書いてるだろ
たとえ例外オフにしてたとしてもな
286デフォルトの名無しさん
2019/01/28(月) 19:56:32.74ID:ehhV00bD 何言ってんだこいつ
287デフォルトの名無しさん
2019/01/28(月) 20:02:46.72ID:s951gwaK スマポがなかった頃、僕はリークしまくりでしたっていう自己紹介文では?
288デフォルトの名無しさん
2019/01/28(月) 20:22:57.30ID:UJKy5wM0 aho ?
289デフォルトの名無しさん
2019/01/28(月) 20:28:40.03ID:zE5Bvtvg >>247
出来ましたーありがとうm(_ _)m
出来ましたーありがとうm(_ _)m
290デフォルトの名無しさん
2019/01/28(月) 21:27:20.71ID:jKaiFfBH291デフォルトの名無しさん
2019/01/28(月) 21:35:34.93ID:3CrwaDYk 流れを切って悪いが、コンセプトを使ってクラスを抽象化するのってありだと思う? 仮想関数のコストを払いたくないのが主な理由です。
これに関する指針とか本とかあったら教えてつかわさい。
これに関する指針とか本とかあったら教えてつかわさい。
292はちみつ餃子 ◆8X2XSCHEME
2019/01/28(月) 22:06:31.16ID:UMu6PPgN294デフォルトの名無しさん
2019/01/28(月) 22:23:20.84ID:ehhV00bD295デフォルトの名無しさん
2019/01/28(月) 22:27:46.35ID:zheEgWgK 例外安全性の困難さを知らないやつほど大口を叩く
296デフォルトの名無しさん
2019/01/28(月) 22:35:01.85ID:ehhV00bD お前の業界の話なんか知らんわ
例外使わない&リソース管理は一元化してる業種だってあるんだよボケ
自分が他人をけなしてるから自分もけなされてるってわかってるか?
例外使わない&リソース管理は一元化してる業種だってあるんだよボケ
自分が他人をけなしてるから自分もけなされてるってわかってるか?
297デフォルトの名無しさん
2019/01/28(月) 22:36:25.09ID:m1mrBSmH >>293
メモリー買い足してもダメ?
メモリー買い足してもダメ?
298デフォルトの名無しさん
2019/01/28(月) 22:39:50.87ID:6rt4c1kU >スマポが無いとリソース管理全く出来ないやつとかお断りだわ
ガチで障害者で草
ガチで障害者で草
299デフォルトの名無しさん
2019/01/28(月) 22:47:52.82ID:zheEgWgK リソース管理一元化の意味わかる人、解説頼む
スマポ使わない理由なのかそれ
スマポ使わない理由なのかそれ
300はちみつ餃子 ◆8X2XSCHEME
2019/01/28(月) 22:49:39.89ID:UMu6PPgN std::shared_ptr は、まあ速度的に不利になる場合もあるだろうけど、
std::unique_ptr を避ける理由って C++11 すら使えない環境の場合以外にはないと思うんだが、何かある?
std::unique_ptr を避ける理由って C++11 すら使えない環境の場合以外にはないと思うんだが、何かある?
301デフォルトの名無しさん
2019/01/28(月) 22:51:28.96ID:MUYIApjm302デフォルトの名無しさん
2019/01/28(月) 22:57:22.66ID:ehhV00bD >>300
そら管理責任を背負ってる部分では使えばいいけど、その一元管理されたリソースを使う側には
普通生ポか参照で渡すだろ
そういう場合にunique使う必要は無いし(unique_ptrの参照でも渡すのか?)
sharedにすると逆に管理責任が曖昧になる
特定のタイミングで一括でリソース確保、解放したいようなシステムを想像したらわかるかと
そら管理責任を背負ってる部分では使えばいいけど、その一元管理されたリソースを使う側には
普通生ポか参照で渡すだろ
そういう場合にunique使う必要は無いし(unique_ptrの参照でも渡すのか?)
sharedにすると逆に管理責任が曖昧になる
特定のタイミングで一括でリソース確保、解放したいようなシステムを想像したらわかるかと
303デフォルトの名無しさん
2019/01/28(月) 23:03:29.70ID:IwEPom0E どうせシーケンス図的なもん書かずに大きいプログラムは作らないと思うんだよね。
そうすると解放する場所も一目瞭然なのであまり必要性を感じない。
それに縛られないプログラムもあると思うけど、その場合得てしてC++は向いとらん。
そうすると解放する場所も一目瞭然なのであまり必要性を感じない。
それに縛られないプログラムもあると思うけど、その場合得てしてC++は向いとらん。
304デフォルトの名無しさん
2019/01/28(月) 23:04:18.01ID:6rt4c1kU そして人は神クラスを作る
305デフォルトの名無しさん
2019/01/28(月) 23:06:28.09ID:zheEgWgK 黙ってればよかったものをw
306デフォルトの名無しさん
2019/01/28(月) 23:08:56.84ID:EdRO7DHl >>300
使ってもいいけど、積極的に使いたくなる状況は意外と少ない
上の人も言ってるように親玉クラスとかスタックの上の方とか管理責任を持ってるところでは使いたければ使ってもいいけど、
そういうときはunique_ptr使わなくてもRAIIで勝手に解放されるでしょ
unique_ptrが本当に有効なのは所有権を他所に完全に引き渡してしまうケースだけど、
値を好んで多用する文化を持ちmoveも使えるC++において、そういうケースってわりとレアだと思う
使ってもいいけど、積極的に使いたくなる状況は意外と少ない
上の人も言ってるように親玉クラスとかスタックの上の方とか管理責任を持ってるところでは使いたければ使ってもいいけど、
そういうときはunique_ptr使わなくてもRAIIで勝手に解放されるでしょ
unique_ptrが本当に有効なのは所有権を他所に完全に引き渡してしまうケースだけど、
値を好んで多用する文化を持ちmoveも使えるC++において、そういうケースってわりとレアだと思う
307デフォルトの名無しさん
2019/01/28(月) 23:09:08.50ID:6rt4c1kU 歴史を再現してて尊い
308デフォルトの名無しさん
2019/01/28(月) 23:13:08.96ID:ehhV00bD309デフォルトの名無しさん
2019/01/28(月) 23:28:08.44ID:E4+rgmE7 所有権というのがいまいちわからんのだけどclassAがunique_pというデータを所有していたとして、他の関数からunique_pを参照して内容を書き換えるのは何も問題ないんだよな?
生成と破棄をまかせるだけという理解でok?
生成と破棄をまかせるだけという理解でok?
310デフォルトの名無しさん
2019/01/29(火) 00:00:27.39ID:2bsH4V/V >>308
unique_ptrについてぐくった?
unique_ptrについてぐくった?
311デフォルトの名無しさん
2019/01/29(火) 00:03:11.11ID:TJ0JKGHp312デフォルトの名無しさん
2019/01/29(火) 00:04:05.29ID:2bsH4V/V313デフォルトの名無しさん
2019/01/29(火) 00:05:28.12ID:2bsH4V/V 何やってもださいやつw
314デフォルトの名無しさん
2019/01/29(火) 00:19:10.99ID:TJ0JKGHp >>309
この場合所有権といえばそう。
この場合所有権といえばそう。
315デフォルトの名無しさん
2019/01/29(火) 00:21:22.57ID:ONcJDm6u >>312
RAIIしたいだけならunique_ptrがなぜ必要?
RAIIしたいだけならunique_ptrがなぜ必要?
316デフォルトの名無しさん
2019/01/29(火) 00:52:07.42ID:QzmnZttP 自動変数として宣言するには危険なぐらい巨大であるとか
他の構造体なりクラスなりにメンバとして埋め込むのが憚られるような
ばかでかい構造体やクラスを保持するのに使うと便利
この使い方に徹するなら所有権みたいな中途半端なブツで悩まずに済む
メンバをunique_ptrで保持するクラスはコンストラクタで例外が生じてもリークせずに済むおまけ付き
コンストラクタで例外など起こすなよというのは置くとして…
他の構造体なりクラスなりにメンバとして埋め込むのが憚られるような
ばかでかい構造体やクラスを保持するのに使うと便利
この使い方に徹するなら所有権みたいな中途半端なブツで悩まずに済む
メンバをunique_ptrで保持するクラスはコンストラクタで例外が生じてもリークせずに済むおまけ付き
コンストラクタで例外など起こすなよというのは置くとして…
317はちみつ餃子 ◆8X2XSCHEME
2019/01/29(火) 03:58:18.59ID:UoxCxtnm >>302 >>306
何も全部のポインタを置き換えるべしというわけじゃない。 所有権の管理に使う話。
下流には「アクセスを許す」のであって、「所有権を渡す」必要はないだろ。
(渡したい設計のときは渡せばいいが。)
可能なら一環してスマートポインタで扱うに越したことは無いとは思うが、
下流に渡すのは生ポインタにするという方針もそれはそれで悪くないと思う。
>>260 みたいなケースであっても、下流には生ポインタで渡すのであっても
スマートポインタは有用にはかわりないって話。
所有権の観点から見ると生ポインタってのは所有権を持っているか持っていないか
わからない状態ってことで、でも、その中に std::unique_ptr がひとつあれば、
それが後始末をするのだというサインになる。
所有権をどこで持っているのか見た目にわかるので、単純に、読みやすい。
もちろん、一旦生ポインタとして取り出したものをまたスマートポインタに入れたりすると
おかしなことになるのでそうしないように気を付ける必要はあるけど。
例外に対して気をつかうのはポインタを適切に扱うより冗長でつらいのでやりたくないってのもある。
何も全部のポインタを置き換えるべしというわけじゃない。 所有権の管理に使う話。
下流には「アクセスを許す」のであって、「所有権を渡す」必要はないだろ。
(渡したい設計のときは渡せばいいが。)
可能なら一環してスマートポインタで扱うに越したことは無いとは思うが、
下流に渡すのは生ポインタにするという方針もそれはそれで悪くないと思う。
>>260 みたいなケースであっても、下流には生ポインタで渡すのであっても
スマートポインタは有用にはかわりないって話。
所有権の観点から見ると生ポインタってのは所有権を持っているか持っていないか
わからない状態ってことで、でも、その中に std::unique_ptr がひとつあれば、
それが後始末をするのだというサインになる。
所有権をどこで持っているのか見た目にわかるので、単純に、読みやすい。
もちろん、一旦生ポインタとして取り出したものをまたスマートポインタに入れたりすると
おかしなことになるのでそうしないように気を付ける必要はあるけど。
例外に対して気をつかうのはポインタを適切に扱うより冗長でつらいのでやりたくないってのもある。
318デフォルトの名無しさん
2019/01/29(火) 04:01:02.14ID:NRuJsE/9 class A
{
Foo* pFoo;
public:
A(): pFoo(new Foo(42)) {}
A(A& other): pFoo(other.pFoo) { other.pFoo = nullptr; }
A& operator=(A& other) { std::swap(this->pFoo, other.pFoo); }
~A() { delete pFoo; }
};
class A
{
std::unique_ptr<Foo> pFoo;
public:
A(): pFoo(std::make_unique<Foo>(42)) {}
};
どっちが間違えにくいかなんて明白だろ
「俺は間違えない」「間違える低能が悪い」とか抜かす奴はソフト品質の勉強してくれ
{
Foo* pFoo;
public:
A(): pFoo(new Foo(42)) {}
A(A& other): pFoo(other.pFoo) { other.pFoo = nullptr; }
A& operator=(A& other) { std::swap(this->pFoo, other.pFoo); }
~A() { delete pFoo; }
};
class A
{
std::unique_ptr<Foo> pFoo;
public:
A(): pFoo(std::make_unique<Foo>(42)) {}
};
どっちが間違えにくいかなんて明白だろ
「俺は間違えない」「間違える低能が悪い」とか抜かす奴はソフト品質の勉強してくれ
319デフォルトの名無しさん
2019/01/29(火) 04:04:45.84ID:NRuJsE/9 あと自分の管理下のデータメンバーを参照するポインタをホイホイ外に渡したいだなんて
それカプセル化出来てない証拠だから
それカプセル化出来てない証拠だから
320デフォルトの名無しさん
2019/01/29(火) 08:17:54.67ID:ONcJDm6u321デフォルトの名無しさん
2019/01/29(火) 08:26:37.92ID:W2YyhY1O スマートポインタがそのRAIIの代表格なのだが
まさか自分で書けばいいから使わなくていいとか言いたいん?
まさか自分で書けばいいから使わなくていいとか言いたいん?
322デフォルトの名無しさん
2019/01/29(火) 08:33:39.21ID:6edJr3Gn ライブラリを使うのは甘え
323デフォルトの名無しさん
2019/01/29(火) 08:33:59.57ID:ONcJDm6u >>321
普通に直接値を持てばいいでしょ
それでカバーしにくい代表的なケースといえば
俺なら遅延初期化したいケースとか多態性を使いたいケースとかが真っ先に思いつくけど、
スマポ派からはそういう指摘が全然出てこなかったってことは実際それほど困らないことの何よりの証拠だなw
普通に直接値を持てばいいでしょ
それでカバーしにくい代表的なケースといえば
俺なら遅延初期化したいケースとか多態性を使いたいケースとかが真っ先に思いつくけど、
スマポ派からはそういう指摘が全然出てこなかったってことは実際それほど困らないことの何よりの証拠だなw
324デフォルトの名無しさん
2019/01/29(火) 09:02:42.51ID:a5ZxXHh2325デフォルトの名無しさん
2019/01/29(火) 09:22:48.30ID:C0E16yKU 初期化の遅延はoptionalがいるから用途として挙げるのは微妙なところ
17使えない場面自体は山ほどあるだろうけどさ
17使えない場面自体は山ほどあるだろうけどさ
326デフォルトの名無しさん
2019/01/29(火) 09:29:51.94ID:8dDk6Bea deleteの手間を惜しむならコメント書くのもやめればと思う
327デフォルトの名無しさん
2019/01/29(火) 09:31:27.97ID:KR1Oxil+ なんなのこの根性論w
便利なものは使えよ
ゼロコストじゃん
便利なものは使えよ
ゼロコストじゃん
328デフォルトの名無しさん
2019/01/29(火) 09:32:04.90ID:C0E16yKU deleteは手間じゃなくてリスクって認識なんですよね
自分を含めて人間を信用してないからdeleteを書かせない(スマポに任せる)
この文脈で人間を信用してないからコメントは書かせる
自分を含めて人間を信用してないからdeleteを書かせない(スマポに任せる)
この文脈で人間を信用してないからコメントは書かせる
329デフォルトの名無しさん
2019/01/29(火) 09:32:41.81ID:6edJr3Gn 30年前の議論してるな
330デフォルトの名無しさん
2019/01/29(火) 09:36:00.95ID:30IAnyu6 new/delete するかどうかの話と、 new/delete する場合にスマートポインタを使うかどうかの話とが
ごっちゃになってる人が居るように見えました。
ごっちゃになってる人が居るように見えました。
331デフォルトの名無しさん
2019/01/29(火) 09:39:36.81ID:8dDk6Bea deleteはもちろん人間が読むためのもんよ。
リソースの解放なんて副次的なもの。
リソースの解放なんて副次的なもの。
332デフォルトの名無しさん
2019/01/29(火) 09:58:45.15ID:KR1Oxil+ またえらいのがやって来たなw
333デフォルトの名無しさん
2019/01/29(火) 10:20:07.20ID:pTVW5tot メモリ解放程度ならお仕着せのスマポで簡単かもしれんけどさ
その他のリソース開放も重なると慎重になったほうがいいわ
どうせ別途開放処理書くなら一緒にポインターも解放したほうがコードの対称性もよくなってわかりやすい
しかしリソース開放漏れがOSレベルでしょっちゅう発生してるのなんとかせい
その他のリソース開放も重なると慎重になったほうがいいわ
どうせ別途開放処理書くなら一緒にポインターも解放したほうがコードの対称性もよくなってわかりやすい
しかしリソース開放漏れがOSレベルでしょっちゅう発生してるのなんとかせい
334デフォルトの名無しさん
2019/01/29(火) 13:13:48.58ID:JkAV6Qsd リソース開放漏れって、ロックされているの?それは悲しいな
335デフォルトの名無しさん
2019/01/29(火) 13:54:12.84ID:TJ0JKGHp336デフォルトの名無しさん
2019/01/29(火) 15:30:43.36ID:oEOJ8htr >>319
const-ness理解してないのはC++理解してない証拠だから。
const-ness理解してないのはC++理解してない証拠だから。
337デフォルトの名無しさん
2019/01/29(火) 17:41:11.83ID:xfxzRb5k338デフォルトの名無しさん
2019/01/29(火) 17:50:18.96ID:TJ0JKGHp339デフォルトの名無しさん
2019/01/29(火) 17:53:37.09ID:TJ0JKGHp ていうかスマポ派は
「スマポ使って楽できる(設計上も問題なく、またそうすべき)場面でもスマポ使わない(または使えない)馬鹿」
を勝手に想定してモノを言ってるから毎回言い争いになるんだと思うが
スマポごときでマウンティングとかおめでてーな
「スマポ使って楽できる(設計上も問題なく、またそうすべき)場面でもスマポ使わない(または使えない)馬鹿」
を勝手に想定してモノを言ってるから毎回言い争いになるんだと思うが
スマポごときでマウンティングとかおめでてーな
340デフォルトの名無しさん
2019/01/29(火) 18:15:41.64ID:8rAEnTT8 そもそもスマポ自体が推奨されるものかどうか。
stl も boost も本当は C++ じゃない。
stl も boost も本当は C++ じゃない。
341デフォルトの名無しさん
2019/01/29(火) 18:22:39.90ID:8rAEnTT8 「どうして、人々は、『私は本当は boost を使いたくない』と遠まわしにほのめか
すのでしょう?」
Why do people seem to insinuate I would rather not use Boost?
Very often here on SO I see notes about boost such as
If you are fine with using Boost...
or
If you can use Boost...
https://stackoverflow.com/questions/33452925/why-do-people-seem-to-insinuate-i-would-rather-not-use-boost
すのでしょう?」
Why do people seem to insinuate I would rather not use Boost?
Very often here on SO I see notes about boost such as
If you are fine with using Boost...
or
If you can use Boost...
https://stackoverflow.com/questions/33452925/why-do-people-seem-to-insinuate-i-would-rather-not-use-boost
342デフォルトの名無しさん
2019/01/29(火) 18:25:38.40ID:xfxzRb5k >>338
「ユーザー」の意味がわからんが、自分が作ったファクトリーは自分だけが使うから危なかろうとなんだろうと構わないっていう意味で抜かしてるならあんたはマトモな開発者じゃないね
「ユーザー」の意味がわからんが、自分が作ったファクトリーは自分だけが使うから危なかろうとなんだろうと構わないっていう意味で抜かしてるならあんたはマトモな開発者じゃないね
343デフォルトの名無しさん
2019/01/29(火) 18:25:40.64ID:8rAEnTT8 Why do people seem to insinuate I would rather not use Boost?
↓
多くの人が、「Boostを使わないほうがいい」、と主張しているように見えるのは
なぜですか?
↓
多くの人が、「Boostを使わないほうがいい」、と主張しているように見えるのは
なぜですか?
344デフォルトの名無しさん
2019/01/29(火) 18:36:19.92ID:TJ0JKGHp >>342
そこまで自分とこのライブラリ開発者も自分すらも信用出来ないのなら
C++使うべきじゃないよ
だいたいその途中経路全てCopyConstructible, CopyAssignableを要求される文脈が
一度たりとも発生しないという保証が無ければunique使えないよな
ていうか趣味グラマだろお前w
そこまで自分とこのライブラリ開発者も自分すらも信用出来ないのなら
C++使うべきじゃないよ
だいたいその途中経路全てCopyConstructible, CopyAssignableを要求される文脈が
一度たりとも発生しないという保証が無ければunique使えないよな
ていうか趣味グラマだろお前w
345デフォルトの名無しさん
2019/01/29(火) 18:43:45.94ID:TJ0JKGHp なんでユーザーがやる前提なんだ、って聞いて「自分だけが使うから」
なんて発想になる時点でお察しなんだが・・まぁ言ってもわからんだろうな
なんて発想になる時点でお察しなんだが・・まぁ言ってもわからんだろうな
346デフォルトの名無しさん
2019/01/29(火) 18:53:34.87ID:xfxzRb5k なんだキチガイか
ムーブするっつってんのになんでコピー可能性要求してんだこのキチガイ
ファクトリーが作ったものを管理屋に渡す前になんでヨソにコピーしてんだこのキチガイ
ムーブするっつってんのになんでコピー可能性要求してんだこのキチガイ
ファクトリーが作ったものを管理屋に渡す前になんでヨソにコピーしてんだこのキチガイ
347デフォルトの名無しさん
2019/01/29(火) 19:09:09.99ID:yGUoU/E+ RAIIを徹底しましょう。
348デフォルトの名無しさん
2019/01/29(火) 19:13:58.69ID:+ftC4go9 これくらいユーザーの関わるレイヤーがバラバラなのがc++なんだわ。
349デフォルトの名無しさん
2019/01/29(火) 19:26:19.11ID:6edJr3Gn レイヤーではなく勉強量
350デフォルトの名無しさん
2019/01/29(火) 19:58:54.89ID:y6MyodWj stlもboostもc++でないという人は他の人が作ったライブラリもc++じゃないというんだろ?
351デフォルトの名無しさん
2019/01/29(火) 20:01:21.40ID:6edJr3Gn Python3はPythonじゃないとか言ってPython2使い続けてるゴミみたいだな
352デフォルトの名無しさん
2019/01/29(火) 20:04:29.67ID:+ftC4go9 ビルド速度、コンパイラの安定性もまともに計らずに
ただ新しいものだけ使えばいいってのはただのバカにしか見えないがな。
ただ新しいものだけ使えばいいってのはただのバカにしか見えないがな。
353デフォルトの名無しさん
2019/01/29(火) 20:12:27.09ID:6edJr3Gn ワロタ
354デフォルトの名無しさん
2019/01/29(火) 20:42:46.37ID:NRuJsE/9 たった8年前に標準化されたばかりの超絶最新機能を使いたがるバカにID:+ftC4go9様がお怒りだぞ
355デフォルトの名無しさん
2019/01/29(火) 20:47:18.60ID:W2YyhY1O 10年は寝かさないと成熟したとは言えないでしょ
なんならもう少し見て20年
なんならもう少し見て20年
356デフォルトの名無しさん
2019/01/29(火) 20:54:35.03ID:jLuFDhog たかが新機能に10年も20年も寝かすとかアホか!
・・と言う人はC++の歴史をよく眺めましょう
・・と言う人はC++の歴史をよく眺めましょう
357デフォルトの名無しさん
2019/01/29(火) 20:55:22.18ID:y6MyodWj 新しい言語が使えなくなっちゃう
358デフォルトの名無しさん
2019/01/29(火) 22:35:06.17ID:QzmnZttP 20年あったらメモリは2^20倍になってCPUの速度も2^20倍ぐらいになる!
359デフォルトの名無しさん
2019/01/29(火) 22:49:33.84ID:eMwTQyJK しかして人間の知能はあまり変わらない
10年で1.01倍くらい
10年で1.01倍くらい
360デフォルトの名無しさん
2019/01/29(火) 23:26:25.60ID:8rAEnTT8 年数の問題でなく、単に boost や C++ の設計者が馬鹿なだけだよ。
はっきり言って。
はっきり言って。
361デフォルトの名無しさん
2019/01/29(火) 23:57:13.83ID:+ftC4go9 で、その新機能とやらで生産性が上がると本気で思ってんのかね?
おめでてーな。
おめでてーな。
362デフォルトの名無しさん
2019/01/30(水) 00:01:24.97ID:vB8508VG >>358
特にCPUの速度に関して本気で言ってんのだったら物を知らないね、あなた。
特にCPUの速度に関して本気で言ってんのだったら物を知らないね、あなた。
363デフォルトの名無しさん
2019/01/30(水) 00:04:00.89ID:UNHNo1ul 企業戦士マジレス
364デフォルトの名無しさん
2019/01/30(水) 00:19:59.89ID:vB8508VG 「template を使うと、エラーが長くなって判読しにくい」
「template は、不注意に使うと、code の肥大化を招く」
「template のインスタンス化すると、コンパイル時間とメモリー使用量が増大する」
これ以外に、「Other issues」の欄に、無数の問題点が挙がっている。
https://en.wikipedia.org/wiki/Standard_Template_Library
Error messages involving templates tend to be very long and difficult to decipher.
This problem has been considered so severe that a number of tools have been
written that simplify and prettyprint STL-related error messages to make them
more comprehensible.
Careless use of templates can lead to code bloat.[7] This has been countered with
special techniques within STL implementations (e.g. using void* containers internally
and other "diet template" techniques) and improving compilers' optimization techniques.
However, this symptom is similar to naively manually copying a set of functions to work
with a different type, in that both can be avoided with care and good technique.
Template instantiation can increase compilation time and memory usage,
in exchange for typically reducing runtime decision-making (e.g. via virtual functions).
Until the compiler technology improves enough, this problem can be only partially
eliminated by careful coding, avoiding certain idioms, and simply not using templates
where they are not appropriate or where compile-time performance is prioritized.
「template は、不注意に使うと、code の肥大化を招く」
「template のインスタンス化すると、コンパイル時間とメモリー使用量が増大する」
これ以外に、「Other issues」の欄に、無数の問題点が挙がっている。
https://en.wikipedia.org/wiki/Standard_Template_Library
Error messages involving templates tend to be very long and difficult to decipher.
This problem has been considered so severe that a number of tools have been
written that simplify and prettyprint STL-related error messages to make them
more comprehensible.
Careless use of templates can lead to code bloat.[7] This has been countered with
special techniques within STL implementations (e.g. using void* containers internally
and other "diet template" techniques) and improving compilers' optimization techniques.
However, this symptom is similar to naively manually copying a set of functions to work
with a different type, in that both can be avoided with care and good technique.
Template instantiation can increase compilation time and memory usage,
in exchange for typically reducing runtime decision-making (e.g. via virtual functions).
Until the compiler technology improves enough, this problem can be only partially
eliminated by careful coding, avoiding certain idioms, and simply not using templates
where they are not appropriate or where compile-time performance is prioritized.
365デフォルトの名無しさん
2019/01/30(水) 00:32:35.94ID:O9mspDJQ コンパイル時間が伸びないテンプレートやらジェネリクスやらなんてのはあるの?
366デフォルトの名無しさん
2019/01/30(水) 00:36:46.36ID:vB8508VG 「STL で実装されているイテレーターの概念は、最初は理解しにくい」
The concept of iterators as implemented by STL can be difficult to understand
at first: for example, if a value pointed to by the iterator is deleted, the iterator
itself is then no longer valid.
↓実は、英語が良く分からない部分があるが、
「メモリ管理に関して、異なるメモリ・アロケーターが使う異なるメモリープール
を同時に使うようなことは出来ないので、状態依存で振舞ってしまうような
メモリ・アロケーターがちゃんと働く事は、コンパイラが動作を保障できない」
みたいな事かな(何かよく分からない):
Compiler compliance does not guarantee that Allocator objects, used for
memory management for containers, will work with state-dependent behavior.
For example, a portable library can't define an allocator type that will pull
memory from different pools using different allocator objects of that type.
(Meyers, p. 50) (addressed in C++11).
The concept of iterators as implemented by STL can be difficult to understand
at first: for example, if a value pointed to by the iterator is deleted, the iterator
itself is then no longer valid.
↓実は、英語が良く分からない部分があるが、
「メモリ管理に関して、異なるメモリ・アロケーターが使う異なるメモリープール
を同時に使うようなことは出来ないので、状態依存で振舞ってしまうような
メモリ・アロケーターがちゃんと働く事は、コンパイラが動作を保障できない」
みたいな事かな(何かよく分からない):
Compiler compliance does not guarantee that Allocator objects, used for
memory management for containers, will work with state-dependent behavior.
For example, a portable library can't define an allocator type that will pull
memory from different pools using different allocator objects of that type.
(Meyers, p. 50) (addressed in C++11).
367デフォルトの名無しさん
2019/01/30(水) 00:48:10.51ID:vB8508VG 直訳すれば、
「コンテナのメモリ管理のために使われている Allocator オブジェクトが、
状態依存の振る舞いを伴って働くことを、コンパイラ準拠は保障しない。」
Compiler compliance does not guarantee that Allocator objects, used for
memory management for containers, will work with state-dependent behavior.
多分、異なったメモリ管理法を使う色々な Memory Allocator があって、
同時に使うことが難しい、というようなことを言っている気がする。
確保されたメモリの先頭アドレスだけを使いたい、というような事でも、
色々な不具合が起きてしまうんだろうか。よく知らないので言ってることも
よく分からない。
「コンテナのメモリ管理のために使われている Allocator オブジェクトが、
状態依存の振る舞いを伴って働くことを、コンパイラ準拠は保障しない。」
Compiler compliance does not guarantee that Allocator objects, used for
memory management for containers, will work with state-dependent behavior.
多分、異なったメモリ管理法を使う色々な Memory Allocator があって、
同時に使うことが難しい、というようなことを言っている気がする。
確保されたメモリの先頭アドレスだけを使いたい、というような事でも、
色々な不具合が起きてしまうんだろうか。よく知らないので言ってることも
よく分からない。
368デフォルトの名無しさん
2019/01/30(水) 00:52:17.50ID:vB8508VG smart pointer や unique pointer、各種コンテナ、Array、Vector、Set
など、色々な物がありすぎて、互いにごちゃごちゃして、メモリブロックを
自動開放するような「状態依存」の振る舞いを、コンパイラが保障することが
できない、みたいなことだろうか。
つまり、誰も分けがわからんスパゲッティー状態なので、メモリーリークも
バグも、めちゃくちゃ生じるかもしれないから、危険だよ、と言うようなことかも
知れない。
そういえば、「実装が複雑すぎて訳分からん」みたいなことがどっかに書かれていた。
など、色々な物がありすぎて、互いにごちゃごちゃして、メモリブロックを
自動開放するような「状態依存」の振る舞いを、コンパイラが保障することが
できない、みたいなことだろうか。
つまり、誰も分けがわからんスパゲッティー状態なので、メモリーリークも
バグも、めちゃくちゃ生じるかもしれないから、危険だよ、と言うようなことかも
知れない。
そういえば、「実装が複雑すぎて訳分からん」みたいなことがどっかに書かれていた。
369デフォルトの名無しさん
2019/01/30(水) 00:59:11.93ID:vB8508VG ・C++の言語仕様もごちゃごちゃと勝手に追加された。
世界中、誰一人として、本当にどうなるかは分からん状態になってる。
つまり、仕様自体がスパゲッティーになってしまってる。
・STL は、使い方も、実装も、両方複雑で、エラーも解読できない。
変な決まりと直感に反する振る舞いが多くて、汚くて使いもんにならない。
仕様が変 ---> 実はバグと同じ。
・これらが両方あいまって、「STL はどう振舞うか保障できません」
と 英語版 Wikipedia に書かれているのかもしれない。
こんな危険ライブラリ(?)は使うべきじゃない。生産性が逆に下がる。
世界中、誰一人として、本当にどうなるかは分からん状態になってる。
つまり、仕様自体がスパゲッティーになってしまってる。
・STL は、使い方も、実装も、両方複雑で、エラーも解読できない。
変な決まりと直感に反する振る舞いが多くて、汚くて使いもんにならない。
仕様が変 ---> 実はバグと同じ。
・これらが両方あいまって、「STL はどう振舞うか保障できません」
と 英語版 Wikipedia に書かれているのかもしれない。
こんな危険ライブラリ(?)は使うべきじゃない。生産性が逆に下がる。
370デフォルトの名無しさん
2019/01/30(水) 01:01:19.96ID:GTSr1lmt もうちょっと読解力とSTLへの理解高めてからそういう主張をされたらいかがか・・・
371デフォルトの名無しさん
2019/01/30(水) 01:05:47.40ID:vB8508VG372デフォルトの名無しさん
2019/01/30(水) 01:12:49.83ID:2o4heCA8 > 世界中、誰一人として、本当にどうなるかは分からん状態になってる。
さすがにこれはない
俺みたいなチン毛みたいなC++グラマーですら、9割がた理解しとるよ
残り1割はもみ手しながら神に祈ってるけど
さすがにこれはない
俺みたいなチン毛みたいなC++グラマーですら、9割がた理解しとるよ
残り1割はもみ手しながら神に祈ってるけど
373デフォルトの名無しさん
2019/01/30(水) 01:15:41.91ID:vB8508VG for example, if a value pointed to by the iterator is deleted, the iterator
itself is then no longer valid.
↑STL, こんなんアホ仕様じゃん。
「イテレーターが指している値が削除されたら、イテレーターそれ自体が
もはや無効になってしまう」
こんなアホ実装しか出来ない、技術のないやつが作ったライブラリが「標準」になって
しまうのが、今の C++ 委員会の実体だ。
こんな状態だから、世界中が引きづられて、地球の生産性が下がっていく。
アメリカ人は馬鹿設計しかできん。だからバグだらけなんだ。
itself is then no longer valid.
↑STL, こんなんアホ仕様じゃん。
「イテレーターが指している値が削除されたら、イテレーターそれ自体が
もはや無効になってしまう」
こんなアホ実装しか出来ない、技術のないやつが作ったライブラリが「標準」になって
しまうのが、今の C++ 委員会の実体だ。
こんな状態だから、世界中が引きづられて、地球の生産性が下がっていく。
アメリカ人は馬鹿設計しかできん。だからバグだらけなんだ。
374デフォルトの名無しさん
2019/01/30(水) 01:17:13.07ID:vB8508VG >>372
実世界で天才と言われているオイラが、STLや今のC++は汚いとしか思えないけどな。
実世界で天才と言われているオイラが、STLや今のC++は汚いとしか思えないけどな。
375デフォルトの名無しさん
2019/01/30(水) 01:39:47.40ID:gkVZVPIY Allocator周りへの不満はあるだろうなと思うけど
削除された値を示すイテレータに正しい内容か不正だと通知を入れるのは
あまりにもコストが大きいからやってないだけだと思う
削除された値を示すイテレータに正しい内容か不正だと通知を入れるのは
あまりにもコストが大きいからやってないだけだと思う
376デフォルトの名無しさん
2019/01/30(水) 01:45:57.91ID:GE8h//C5 >>369
お前の言ってる事もSTL並みにゴチャゴチャやで。
お前の言ってる事もSTL並みにゴチャゴチャやで。
377デフォルトの名無しさん
2019/01/30(水) 01:56:09.46ID:YAuiBXnQ >>376
STLの方がまだ理屈が通っている分、難解だとしても理解しやすい。
STLの方がまだ理屈が通っている分、難解だとしても理解しやすい。
378デフォルトの名無しさん
2019/01/30(水) 02:00:39.54ID:UPzEtDGO >>362
確かに年2倍は盛ったがシリコンの比例縮小則が続く限りクロックは伸び続けるはず…
リーク電流による爆熱はHigh-Kで対策されたし
マルチコアに向かう流れは業界の怠惰にすぎず、物理的制約のせいではない…!
確かに年2倍は盛ったがシリコンの比例縮小則が続く限りクロックは伸び続けるはず…
リーク電流による爆熱はHigh-Kで対策されたし
マルチコアに向かう流れは業界の怠惰にすぎず、物理的制約のせいではない…!
379デフォルトの名無しさん
2019/01/30(水) 02:03:01.61ID:TJF4rq85380デフォルトの名無しさん
2019/01/30(水) 02:10:35.13ID:AGTVqw9V std::move、std::forwardと右辺値参照の関係とか特にtemplateが絡むと分かりにくいな。
まぁ、ライブラリ作るときに気をつければ良いだけだから、比較的どうでも良い問題ではあるけど。
STL自体はそんなに難解でもなくない?
コンテナのAllocatorは実際に差し替えて使ってるやつなんてあんまりいないと思うしw
まぁ、ライブラリ作るときに気をつければ良いだけだから、比較的どうでも良い問題ではあるけど。
STL自体はそんなに難解でもなくない?
コンテナのAllocatorは実際に差し替えて使ってるやつなんてあんまりいないと思うしw
381デフォルトの名無しさん
2019/01/30(水) 02:25:53.25ID:stWE4sF7 allocatorに無頓着な人って本当にc++使う必然性あるか考えた方がいいと思う
382デフォルトの名無しさん
2019/01/30(水) 02:35:48.20ID:gkVZVPIY 実際にアロケータ差し替えて使ってるとちょこちょこ「アレ??」
って思うとこはあるんだよね
まぁ文字コード周りがクソと言われがちなのと同じで、
使う奴が少ないところは結構微妙だったりする
(代替案としてpolymorphic memory resourceは出てきたけどまだ使い倒してないからよくわからん、
メモリの確保に普通型なんか関係無いから、型に依存しなくなったのは便利だなと思うけど)
って思うとこはあるんだよね
まぁ文字コード周りがクソと言われがちなのと同じで、
使う奴が少ないところは結構微妙だったりする
(代替案としてpolymorphic memory resourceは出てきたけどまだ使い倒してないからよくわからん、
メモリの確保に普通型なんか関係無いから、型に依存しなくなったのは便利だなと思うけど)
383デフォルトの名無しさん
2019/01/30(水) 02:56:49.38ID:6SCLtJmj 難しいことよくわからんけど、tupleの要素取り出すのがstd::get<index>(var)なの嫌い
var.get(index)になぜ出来なかったの
var.get(index)になぜ出来なかったの
384デフォルトの名無しさん
2019/01/30(水) 03:09:37.94ID:gkVZVPIY indexはコンパイル時定数じゃないといけないし
テンプレート引数だからvar.template get<index>()とか書かないといけないからじゃね
constexprに出来る文脈ならvar.get(index)にできるだろうけど・・
(個人的にはvar.template get<index>()でいいからそう書けるようにもして欲しかったw
テンプレート引数だからvar.template get<index>()とか書かないといけないからじゃね
constexprに出来る文脈ならvar.get(index)にできるだろうけど・・
(個人的にはvar.template get<index>()でいいからそう書けるようにもして欲しかったw
385デフォルトの名無しさん
2019/01/30(水) 07:03:31.67ID:vmEMjO5m pairもarrayも生配列も同じように使えるようにじゃなかったっけ?
同じ理由で今はv.begin()よりstd::begin(v)が推奨されてるよな
同じ理由で今はv.begin()よりstd::begin(v)が推奨されてるよな
386デフォルトの名無しさん
2019/01/30(水) 08:50:33.43ID:1AdXwgl8 あ た り ま え だ が
STLは”勉強していない奴”のことは”想定”していないからな
だから”わかりにくい”とか言ってる奴は”勉強不足”の”論外”な人間なわけ
STLは”勉強していない奴”のことは”想定”していないからな
だから”わかりにくい”とか言ってる奴は”勉強不足”の”論外”な人間なわけ
387デフォルトの名無しさん
2019/01/30(水) 09:01:51.07ID:/QR/gxPZ まあC++は人をふるい落とすための言語だからな。
別に書きやすいわけではない。
別に書きやすいわけではない。
388デフォルトの名無しさん
2019/01/30(水) 09:06:27.12ID:1AdXwgl8 わかりにくいとか使いにくいとかいう批判をされても作ってる人も使ってる人もふーんとしか思ってない
誰にでも使えるようにだとか寄せ集めのチームの生産性を上げるだけとかは全く考えてない
そういうのはC#の仕事
誰にでも使えるようにだとか寄せ集めのチームの生産性を上げるだけとかは全く考えてない
そういうのはC#の仕事
389デフォルトの名無しさん
2019/01/30(水) 12:23:30.32ID:gkVZVPIY 何言ってんだこいつ
390デフォルトの名無しさん
2019/01/30(水) 12:52:40.78ID:tru3FX0q 確かにstlの基本ぐらい勉強しろとおもうけど
標準ライブラリ全体になるとかなり無理げーでしょ
肥大しすぎだわ
説明読んでも意味不明で、意味理解したときはむしろc++に絶望を感じる
作ってる人は使ってるひとのこと考えてるとは思えないね
別に数行短くなるとかどうでもいい
標準ライブラリ全体になるとかなり無理げーでしょ
肥大しすぎだわ
説明読んでも意味不明で、意味理解したときはむしろc++に絶望を感じる
作ってる人は使ってるひとのこと考えてるとは思えないね
別に数行短くなるとかどうでもいい
391デフォルトの名無しさん
2019/01/30(水) 13:39:29.80ID:GE8h//C5 全容把握はやる気せんわ>STL。
上でも出てるけどallocatorみたいな問題あるし、そこは付き合ってらんない。
上でも出てるけどallocatorみたいな問題あるし、そこは付き合ってらんない。
392デフォルトの名無しさん
2019/01/30(水) 14:02:07.62ID:V6i8EwMo393デフォルトの名無しさん
2019/01/30(水) 14:48:48.06ID:Uh+VRScZ shared_ptrとコンテナはまあわからんでもないが
unique_ptrが難しいと騒いでる奴は何が難しいと思ってるのかさっぱりわからない
リアルにも結構いるけど
unique_ptrが難しいと騒いでる奴は何が難しいと思ってるのかさっぱりわからない
リアルにも結構いるけど
394デフォルトの名無しさん
2019/01/30(水) 14:50:08.15ID:uKzqzpGV unique打つのが難しい
395デフォルトの名無しさん
2019/01/30(水) 15:02:56.56ID:1AdXwgl8 ゆ・・・ゆにきゅー・・・
396デフォルトの名無しさん
2019/01/30(水) 15:07:10.83ID:gkVZVPIY >unique_ptrが難しいと騒いでる奴
そんな奴居たか?
そんな奴居たか?
397デフォルトの名無しさん
2019/01/30(水) 17:37:34.50ID:xoRVo/qA 「unique_ptrが難しいから使わないんだ」
「スマポが難しいから使わないんだ」
っていうレベルで考えてるやつがいたとは驚き
周回遅れっすなぁ
「スマポが難しいから使わないんだ」
っていうレベルで考えてるやつがいたとは驚き
周回遅れっすなぁ
398はちみつ餃子 ◆8X2XSCHEME
2019/01/30(水) 17:48:26.91ID:AHrCbFFN >>396
理解が難しいと言ってるやつはあまりいないと思うが、
このスレでは「使いどころが難しい (使える場面は思ったよりずっと少ないのであまり有難みがない)」
という主張はよく出てると思う。
std::unique_ptr の価値を十全に感じたいならば、
一貫して std::unique_ptr を利用する必要があるが、面倒くさいし、
様々なライブラリを組み合わせようとするとそうもいかないこともあるというのは確かにある。
現実は非情である。
私自身はとりあえず部分的な利用であっても、
(少なくともその箇所では) 例外に対して面倒くさい配慮をしなくてよいってだけで充分にありがたいと思うんだけどな〜。
理解が難しいと言ってるやつはあまりいないと思うが、
このスレでは「使いどころが難しい (使える場面は思ったよりずっと少ないのであまり有難みがない)」
という主張はよく出てると思う。
std::unique_ptr の価値を十全に感じたいならば、
一貫して std::unique_ptr を利用する必要があるが、面倒くさいし、
様々なライブラリを組み合わせようとするとそうもいかないこともあるというのは確かにある。
現実は非情である。
私自身はとりあえず部分的な利用であっても、
(少なくともその箇所では) 例外に対して面倒くさい配慮をしなくてよいってだけで充分にありがたいと思うんだけどな〜。
399デフォルトの名無しさん
2019/01/30(水) 18:20:07.90ID:gkVZVPIY いや俺もこないだ色々言ったけど便利だと思うよ
スマポの利便性の否定なんてしてないし使えるときは積極的に使ってる
ただ「全部スマポ使え、そうでないやつのコードは危険」
みたいなアホなこと言い出すやつが出てきて毎回話がおかしくなる
(全部スマポにするのも一つの設計方針ではあると思うけど・・・
どんなメモリ管理のケースにも対応できる、なんて自分は断言できないけどなぁ)
スマポの利便性の否定なんてしてないし使えるときは積極的に使ってる
ただ「全部スマポ使え、そうでないやつのコードは危険」
みたいなアホなこと言い出すやつが出てきて毎回話がおかしくなる
(全部スマポにするのも一つの設計方針ではあると思うけど・・・
どんなメモリ管理のケースにも対応できる、なんて自分は断言できないけどなぁ)
400デフォルトの名無しさん
2019/01/30(水) 18:32:35.81ID:bIZhf79S 半角カナのときと似てるな
401デフォルトの名無しさん
2019/01/30(水) 18:47:36.15ID:Etz6JgfQ スマポ使わない奴は死刑にする法律ができても良いくらい。
スマポを使わなかったせいで飛行機が落ちたり電車が衝突したりしてるからな。
住之江の自動運転が衝突したのもスマポ使ってれば防げたしな。
何人殺せばスマポ使うようになるんだってお話。
スマポを使わなかったせいで飛行機が落ちたり電車が衝突したりしてるからな。
住之江の自動運転が衝突したのもスマポ使ってれば防げたしな。
何人殺せばスマポ使うようになるんだってお話。
402デフォルトの名無しさん
2019/01/30(水) 22:03:27.11ID:gkVZVPIY スマポで物理的な障害を防げるのか
万能だな
万能だな
403デフォルトの名無しさん
2019/01/30(水) 22:05:55.39ID:GTSr1lmt プログラムの小さいバグで大事故は割とある話
スマポ案件は知らないが
スマポ案件は知らないが
404デフォルトの名無しさん
2019/01/30(水) 22:12:36.60ID:KxSBU/Xz 数値計算のオーバーフローだかゼロ除算だかでスペースシャトル落ちたんやで
405デフォルトの名無しさん
2019/01/30(水) 22:12:59.37ID:icd7+TXR そんなに凄いなら、次世代OSでも採用されるでしょうね
406デフォルトの名無しさん
2019/01/30(水) 22:27:00.90ID:gkVZVPIY いや、住之江 自動運転 衝突 で調べたら物理だったw
407デフォルトの名無しさん
2019/01/30(水) 22:27:27.73ID:GE8h//C5 bool 値インクリメントで放射線事故なんてのもある。
スマポだって要らんretainして事故が起きる可能性がある。
エラーを防ぐのは人の仕事であって言語や処理系、ライブラリではない。
スマポだって要らんretainして事故が起きる可能性がある。
エラーを防ぐのは人の仕事であって言語や処理系、ライブラリではない。
408デフォルトの名無しさん
2019/01/30(水) 23:40:14.23ID:Etz6JgfQ >>407
ならスマブ発明しろよ。
ならスマブ発明しろよ。
409デフォルトの名無しさん
2019/01/30(水) 23:58:05.04ID:GTSr1lmt boolのインクリメントはもう駄目にならんかったっけ
410デフォルトの名無しさん
2019/01/31(木) 01:03:44.53ID:1/qzJ5j1 ブールの++は禁止されるね。
スマートブール つ
struct Bool {
enum class Value { True, False };
Value value;
// その他I/Fはお好みで、でも++とか上書きしないように。
};
スマートブール つ
struct Bool {
enum class Value { True, False };
Value value;
// その他I/Fはお好みで、でも++とか上書きしないように。
};
411デフォルトの名無しさん
2019/01/31(木) 11:58:25.10ID:xxTKFGAk412デフォルトの名無しさん
2019/01/31(木) 12:04:22.91ID:AG1iGZmY やるなとお達しがきたことをやろうとするなよ
413デフォルトの名無しさん
2019/01/31(木) 12:41:33.66ID:1/qzJ5j1 struct を class に置き換えるなり好きに使えよアホ。挙動に制限つけたブール定義するのは簡単って意味。多少面倒でも人殺すよりまし。
キャストとかimplicitコンストラクタとか型安全な範囲で定義してね。
思考力無いんか? 猿なの? お前みたいなの職場にいたらガン無視。ナスと出世目の前にぶら下げて使い倒して、年食ったら捨てるわ。
キャストとかimplicitコンストラクタとか型安全な範囲で定義してね。
思考力無いんか? 猿なの? お前みたいなの職場にいたらガン無視。ナスと出世目の前にぶら下げて使い倒して、年食ったら捨てるわ。
414デフォルトの名無しさん
2019/01/31(木) 13:10:00.69ID:xxTKFGAk415デフォルトの名無しさん
2019/01/31(木) 13:31:27.74ID:1/qzJ5j1 バカに物事を説明すんの大変なの忘れてたわ。
416デフォルトの名無しさん
2019/01/31(木) 13:43:59.16ID:sy1gbegF 大入するときいちいちBool::Value::Trueとかってやるの?
417デフォルトの名無しさん
2019/01/31(木) 13:57:43.91ID:1/qzJ5j1 ラフスケッチって言葉知ってる?
418デフォルトの名無しさん
2019/01/31(木) 16:17:54.16ID:VRtcylyh ラフスケッチだったのか
下手すぎて知恵遅れの落書きと区別付かんかったわ
下手すぎて知恵遅れの落書きと区別付かんかったわ
419デフォルトの名無しさん
2019/01/31(木) 16:53:45.33ID:Z74WfsQD このスレって、昔デパートの屋上とかでやってた
マングースvsコブラみたいなおもしろさがあるな
マングースvsコブラみたいなおもしろさがあるな
420デフォルトの名無しさん
2019/01/31(木) 17:57:23.79ID:yYR5uNJo こういうつまらんネタに食いついたら負け
421デフォルトの名無しさん
2019/01/31(木) 18:40:23.44ID:EoQh+WIC キャットファイトでしょうに
422デフォルトの名無しさん
2019/01/31(木) 19:14:06.04ID:1/qzJ5j1 落書きレベルのトリックで回避できる問題が10年以上放置されてるのがC++。
423デフォルトの名無しさん
2019/01/31(木) 19:31:16.26ID:kVV1KZIE >>410だと何がスマートになるの?
trueとfalseは逆にするとして。
trueとfalseは逆にするとして。
424デフォルトの名無しさん
2019/01/31(木) 19:48:03.87ID:1/qzJ5j1 暗黙型変換と人が「普通に」書いてしまう演算からbool値の持つ論理的な意味を守れる。
425はちみつ餃子 ◆8X2XSCHEME
2019/01/31(木) 19:53:56.29ID:/EjhL9q2 bool は整数型のカテゴリに入ってるから
整数型同士の演算の中ではうっかり int に昇格されたりするんよ。
整数型同士の演算の中ではうっかり int に昇格されたりするんよ。
426デフォルトの名無しさん
2019/01/31(木) 20:36:17.65ID:/iSEbovL だったらexplicit operator boolも書いとけばいいのに
誰でも落書きできる所までしか書かないから知恵遅れに見える
誰でも落書きできる所までしか書かないから知恵遅れに見える
427デフォルトの名無しさん
2019/01/31(木) 20:48:55.70ID:MHcg0e3g boolの問題なんてさんざん語りつくされてる話題なわけで
そんなにいきり立つのも知恵遅れに見えるんだが
そんなにいきり立つのも知恵遅れに見えるんだが
428デフォルトの名無しさん
2019/01/31(木) 20:52:11.62ID:AG1iGZmY そもそもこのスレに新規性なんかないじゃん
429デフォルトの名無しさん
2019/02/01(金) 18:33:11.64ID:yTOsL8ZZ pimplって具体的に何が凄いのが実感出来ない‥
実感できるコード例ってありませんか?
実感できるコード例ってありませんか?
430デフォルトの名無しさん
2019/02/01(金) 19:20:32.36ID:F7i5oL97 コード例は示せないけど
dllとかlib作るときに使ってみるといいと思う
dllとかlib作るときに使ってみるといいと思う
431デフォルトの名無しさん
2019/02/01(金) 19:48:57.61ID:poPQewMk つまんないもん見せなくて済むじゃないか
432デフォルトの名無しさん
2019/02/01(金) 20:06:34.47ID:fyiIuKBL 実装を隠したいときに必須なんだが
隠す必要を感じてない人に説明するのは難しいんだよな
必要ない人は一生必要ないからね
隠す必要を感じてない人に説明するのは難しいんだよな
必要ない人は一生必要ないからね
433デフォルトの名無しさん
2019/02/01(金) 20:26:30.63ID:cIYuVXTd 必須ではないがな
他にも方法はある
他にも方法はある
434デフォルトの名無しさん
2019/02/01(金) 20:35:32.21ID:cfE6zEWc435デフォルトの名無しさん
2019/02/01(金) 20:44:11.59ID:h+AyUO7a インターフェース準備してスマポ返せばええやんけpimplなんぞいらんしって思いました
436デフォルトの名無しさん
2019/02/01(金) 20:46:34.12ID:cfE6zEWc >>435
設計の本には、実装を隠ぺいすることで変更に強くなると書いてあるけど、Qt見ると、いい部分も悪い部分もあるね。
設計の本には、実装を隠ぺいすることで変更に強くなると書いてあるけど、Qt見ると、いい部分も悪い部分もあるね。
437デフォルトの名無しさん
2019/02/01(金) 20:47:43.65ID:cfE6zEWc 各種OSに対応するには、pimplが良かったのかもしれない。
438デフォルトの名無しさん
2019/02/01(金) 20:50:18.54ID:h+AyUO7a 実装を隠したいならインターフェース使うだけでいい
インターフェースと比べた時にピンプルにはこれといってメリットはない
インターフェースと比べた時にピンプルにはこれといってメリットはない
439デフォルトの名無しさん
2019/02/01(金) 20:55:50.49ID:cfE6zEWc440デフォルトの名無しさん
2019/02/01(金) 20:56:30.95ID:V+NZiA0Z コンパイル時間が短くなるのがpimplの利点で実装を隠蔽出来るのは副次的なものと何処かで見た気がする
441デフォルトの名無しさん
2019/02/01(金) 21:02:05.52ID:F7i5oL97 pimplの利点は依存ヘッダを減らせることだと思ってる
真のprivateとかに感動してる人いるけど、あれはなんか違う・・・
真のprivateとかに感動してる人いるけど、あれはなんか違う・・・
442デフォルトの名無しさん
2019/02/01(金) 21:07:03.72ID:sG4RlIjp 開発の効率化=pimpleの利点。
小さな変更で全ビルド5分待ちはやってられん。
一々ヘッダにこんなもん書くかよ、って思ったり思わせたりしないで済む。
小さな変更で全ビルド5分待ちはやってられん。
一々ヘッダにこんなもん書くかよ、って思ったり思わせたりしないで済む。
443デフォルトの名無しさん
2019/02/01(金) 21:49:44.81ID:cIYuVXTd444デフォルトの名無しさん
2019/02/01(金) 21:51:57.86ID:cIYuVXTd 組み込みやってる身としてはpimplは中でnewかまされるのが困る
インターフェースも同様
インターフェースも同様
445デフォルトの名無しさん
2019/02/01(金) 22:26:16.19ID:F7i5oL97 同じことを思ってplacement newでやる奴を昔作ったけど、std::launderがないと辛かった
446デフォルトの名無しさん
2019/02/01(金) 22:26:54.36ID:q6HbkB1M 別にnewしなても代わりにobj[1000]から&obj[0]、&obj[1]、&obj[2]、…を返すファクトリーにしたら良いんじゃ…
447デフォルトの名無しさん
2019/02/01(金) 22:38:43.24ID:x/1+NmNy 無名namespaceもいいもんだよ
448デフォルトの名無しさん
2019/02/01(金) 22:54:58.73ID:2kCPE8R8 コンパイルエラーで見づらくなるから使わねーわ
449デフォルトの名無しさん
2019/02/01(金) 23:17:25.49ID:q6HbkB1M クラスの定義をファイルスコープ(風)にしたいときは無名namespaceを使うしかない
static class Foo { ... };と書けたら良いのに!
static class Foo { ... };と書けたら良いのに!
450デフォルトの名無しさん
2019/02/01(金) 23:45:38.78ID:j6iAMD6D private namespaceはよ
451デフォルトの名無しさん
2019/02/01(金) 23:56:09.24ID:F7i5oL97 nemaspace templateが欲しいとたまに思う
452デフォルトの名無しさん
2019/02/01(金) 23:58:16.64ID:h+AyUO7a ここまでピンプルのメリットすべてインターフェースでも得られる件
・実装隠蔽
・コンパイル時間短縮
・依存ヘッダ最小化
やはり無駄なイディオムだったか
無意味にテクニカルに見せかけてカッコつけたかっただけだろ
・実装隠蔽
・コンパイル時間短縮
・依存ヘッダ最小化
やはり無駄なイディオムだったか
無意味にテクニカルに見せかけてカッコつけたかっただけだろ
453デフォルトの名無しさん
2019/02/02(土) 00:15:52.64ID:xBrfKG0X インターフェースで依存ヘッダ最小化できるの?
454デフォルトの名無しさん
2019/02/02(土) 00:19:23.04ID:hwq9uAM7 >>452
なんでお前が勝ち誇ってんだよw
なんでお前が勝ち誇ってんだよw
455デフォルトの名無しさん
2019/02/02(土) 00:22:54.25ID:hwq9uAM7 上にもあるけどコンストラクタ使えないのは大きな制約だろ
456デフォルトの名無しさん
2019/02/02(土) 15:28:45.27ID:YXCix+RL わざと変な名前の名前空間使ってるわ。
なんやらかんやら_WorkingNamespace とか。
なんやらかんやら_WorkingNamespace とか。
457デフォルトの名無しさん
2019/02/02(土) 16:20:02.86ID:db88iM+8 変な名前にしなくてdetailかimplでいいぞ
458デフォルトの名無しさん
2019/02/02(土) 18:17:31.28ID:waqQgiJK >>455
factoryはだめなの?
factoryはだめなの?
459デフォルトの名無しさん
2019/02/02(土) 18:28:03.14ID:hwq9uAM7 templateでコンストラクタ呼び出すとこ全滅するじゃん
460はちみつ餃子 ◆8X2XSCHEME
2019/02/02(土) 18:38:05.82ID:KkdP20n5 隠蔽つったってなぁ、
呼んでも良いのとそうでないのを言語の規則で可視化しようってだけのことで、
なんなら名前規約で「これは外から呼ぶなよ!」というのを徹底できるならば
別にそれでもかまわんのよ。
でも、広く使われるライブラリはキッチリ分けて、
変な使い方をエラーにしてくれた方がありがたいし、
どのくらいキッチリと隠蔽するかは場合によるというか、程度問題よね。
呼んでも良いのとそうでないのを言語の規則で可視化しようってだけのことで、
なんなら名前規約で「これは外から呼ぶなよ!」というのを徹底できるならば
別にそれでもかまわんのよ。
でも、広く使われるライブラリはキッチリ分けて、
変な使い方をエラーにしてくれた方がありがたいし、
どのくらいキッチリと隠蔽するかは場合によるというか、程度問題よね。
461デフォルトの名無しさん
2019/02/02(土) 22:25:17.69ID:wSrrYQ7Y >>459
コンストラクタが必要になったらそこでラッパーを書けばいい
コンストラクタが必要になったらそこでラッパーを書けばいい
462デフォルトの名無しさん
2019/02/02(土) 22:41:55.99ID:mZCa7M9L >>459
Factory使えよ
そのテンプレートが現実にどれだけ汎用的に使えたか思い返してみるとわかると思うが、コストラクタを直接呼ぶのは制約が強くなりすぎる
インターフェイスに限った話ではなく一般論として、インスタンスの生成は間に一段Factoryを噛ませたほうがいい
Factory使えよ
そのテンプレートが現実にどれだけ汎用的に使えたか思い返してみるとわかると思うが、コストラクタを直接呼ぶのは制約が強くなりすぎる
インターフェイスに限った話ではなく一般論として、インスタンスの生成は間に一段Factoryを噛ませたほうがいい
463デフォルトの名無しさん
2019/02/02(土) 23:06:34.47ID:7LHz6bLK 左様コンストラクタでFooのファクトリーを呼ぶFooのWrapperクラスでも書いたら一応STL対応はできる気がする
やらないけど
やらないけど
464デフォルトの名無しさん
2019/02/02(土) 23:20:07.82ID:BCOo8pbG Factory が駄目なら Virtualコンストラクタを使えば良いじゃない。by マリー
465デフォルトの名無しさん
2019/02/03(日) 05:14:26.28ID:t4xt++Qj テスト
466デフォルトの名無しさん
2019/02/03(日) 09:30:58.19ID:cLU3XamP ・バカ
std::shared_ptr<Pimpl> p = std::make_shared<Pimpl>(a, b);
・賢者
std::shared_ptr<Interface> p = factory->create_shared(a, b);
std::shared_ptr<Pimpl> p = std::make_shared<Pimpl>(a, b);
・賢者
std::shared_ptr<Interface> p = factory->create_shared(a, b);
467デフォルトの名無しさん
2019/02/03(日) 09:42:10.45ID:DWuTVIRg pimplクラスをポインタで取り回すのは確かにバカだ
468デフォルトの名無しさん
2019/02/03(日) 10:02:23.87ID:z6lglBs4 ポイントがInterfaceにあるのかcreate_sharedにあるのかよくわからんな。
結局どういう主張?
結局どういう主張?
469デフォルトの名無しさん
2019/02/03(日) 10:03:56.22ID:LVMUXp5G470デフォルトの名無しさん
2019/02/03(日) 10:12:34.61ID:cLU3XamP >>469
auto s = factory->create_shared(a, b);
auto u = factory->create_unique(a, b);
auto p = factory->create_raw(a, b);
p->get_deleter()->delete(p);
auto s = factory->create_shared(a, b);
auto u = factory->create_unique(a, b);
auto p = factory->create_raw(a, b);
p->get_deleter()->delete(p);
471デフォルトの名無しさん
2019/02/03(日) 10:17:43.87ID:cLU3XamP pimplで共有、占有、手動のライフサイクルをサポートするにはどうすればいいの?
472デフォルトの名無しさん
2019/02/03(日) 12:13:54.64ID:dVyjbDnx namespaceの名前ってやはり2文字や3文字の短い略称などにするべきだと思いますか?
473デフォルトの名無しさん
2019/02/03(日) 12:40:43.63ID:LVMUXp5G474デフォルトの名無しさん
2019/02/03(日) 13:35:19.43ID:yzIWridw >>472
必要に応じてエイリアスを使えばいいので、多少長くとも意味が伝わる名前を意識した方が良いかと思う
必要に応じてエイリアスを使えばいいので、多少長くとも意味が伝わる名前を意識した方が良いかと思う
475デフォルトの名無しさん
2019/02/03(日) 14:31:23.64ID:PHKA1IHb boost.asioを見れば分かるように長かったり深くても問題ない
476デフォルトの名無しさん
2019/02/03(日) 14:34:36.48ID:14RUg1W9 え?boost参考にしちゃうの?
477デフォルトの名無しさん
2019/02/03(日) 17:28:14.38ID:goybUCc4 とりあえずのサンプル的な場面でhageというキーワードつかうのはやめてほしい
478デフォルトの名無しさん
2019/02/03(日) 17:51:32.24ID:DVXBklBr h_age
479デフォルトの名無しさん
2019/02/03(日) 18:48:10.20ID:/SCtje8J stdは長すぎるとusing namespace stdされるからあれで良い
480デフォルトの名無しさん
2019/02/03(日) 19:10:43.15ID:UX3PZoE1 メソッド呼び出し時の値のコピーって排他の考慮は不要なの?
481デフォルトの名無しさん
2019/02/03(日) 19:13:40.17ID:cLU3XamP >>480
当然必要
当然必要
482デフォルトの名無しさん
2019/02/03(日) 20:01:48.90ID:OYz8YI9S483デフォルトの名無しさん
2019/02/03(日) 20:14:23.95ID:s/ZudwPt 意味なんでどうでもいいし
よく使うものは短くあるべし
よく使うものは短くあるべし
484デフォルトの名無しさん
2019/02/03(日) 20:39:58.91ID:OlGWTuPH >>483 この人アカン人。
485デフォルトの名無しさん
2019/02/03(日) 20:43:45.32ID:yzIWridw そしてすべてがグローバル名前空間に・・・
486デフォルトの名無しさん
2019/02/03(日) 20:51:16.38ID:14RUg1W9 Excel方式でA1、A2ってつけていけばよい。
487デフォルトの名無しさん
2019/02/03(日) 20:58:26.26ID:/SCtje8J std::XXX程度ならusingなどいちいちせずに毎回std::XXXと書くわの意味
488デフォルトの名無しさん
2019/02/03(日) 20:59:27.30ID:JIYTTgNa 今はusingでエイリアス使うことだってできるんだし、定義側はある程度長い名前つけておいたほうがいいだろ。
489デフォルトの名無しさん
2019/02/03(日) 21:48:13.84ID:7BX8k8w8 namespace longlongnamespace{
struct hogehogename{
};
}
namespace untarakantara{
//長すぎる
void test(const longlongnamespace::hogehogename* lhs);
}
上のようにuntarakantaraという名前空間でライブラリを作成するときに長い名前空間だとうざったい。
//この場合usingで取り込むのが正解?
//ライブラリなんだから名前空間まで含めてすべて明記すべき?
namespace untarakantara{
using longlongnamespace::hogehogename;//1
void test(const hogehogename* lhs); //1
void test(const longlongnamespace::hogehogename* lhs);//2
}
//std::filesystemやstd::chrono等を想定
struct hogehogename{
};
}
namespace untarakantara{
//長すぎる
void test(const longlongnamespace::hogehogename* lhs);
}
上のようにuntarakantaraという名前空間でライブラリを作成するときに長い名前空間だとうざったい。
//この場合usingで取り込むのが正解?
//ライブラリなんだから名前空間まで含めてすべて明記すべき?
namespace untarakantara{
using longlongnamespace::hogehogename;//1
void test(const hogehogename* lhs); //1
void test(const longlongnamespace::hogehogename* lhs);//2
}
//std::filesystemやstd::chrono等を想定
490デフォルトの名無しさん
2019/02/03(日) 21:50:58.54ID:mcfLKNvL ヘッダには長いのをそのまま書いて実装でusing namespaceすればいいじゃん
491デフォルトの名無しさん
2019/02/03(日) 21:59:39.14ID:14RUg1W9 >>490
ユーザーに無駄な手間をかけさせるな。
ユーザーに無駄な手間をかけさせるな。
492デフォルトの名無しさん
2019/02/03(日) 22:00:19.11ID:Dsz5FlLI >>482
性感染症(STD)は、必ずしも自覚症状があるとは限らない病気です
性感染症(STD)は、必ずしも自覚症状があるとは限らない病気です
494デフォルトの名無しさん
2019/02/03(日) 23:52:42.87ID:JIYTTgNa495デフォルトの名無しさん
2019/02/04(月) 00:38:59.33ID:crpI56wI ヘッダファイル(.h)では全体を
namespace longlonglongname { ... }
で囲い、ソースコード本体(.cpp)では冒頭で
using namespace longlonglongname;
としておけば幸せになれるかもしれん…
(開発側はlonglonglongnameを2箇所だけ書けば済むし、3行コメントアウトしたらいつでもlonglonglongnameネームスペースを外せる
べつにソースコード本体の側もnamespace longlonglongname { ... }で囲っても良いが
namespace longlonglongname { ... }
で囲い、ソースコード本体(.cpp)では冒頭で
using namespace longlonglongname;
としておけば幸せになれるかもしれん…
(開発側はlonglonglongnameを2箇所だけ書けば済むし、3行コメントアウトしたらいつでもlonglonglongnameネームスペースを外せる
べつにソースコード本体の側もnamespace longlonglongname { ... }で囲っても良いが
496デフォルトの名無しさん
2019/02/04(月) 00:56:22.60ID:RjHPX//j497デフォルトの名無しさん
2019/02/04(月) 08:09:08.83ID:8DX2Gc+T 今ならエイリアスでいいだろ。
usingでnamespace全体持ち込むのはdeprecatedにしてもらってもいいくらいだわ。
usingでnamespace全体持ち込むのはdeprecatedにしてもらってもいいくらいだわ。
498デフォルトの名無しさん
2019/02/05(火) 03:18:17.76ID:HIaY+PNB 以下のテンプレート関数が
template <typename T, typename U, int E>
static constexpr T f<E>(const T x, const U y) noexcept
{
return Class<T, U>::f2<E>(x, y);
}
以下のようによびだせないのは何故ですか?
f<3>(x2, y2);
template <typename T, typename U, int E>
static constexpr T f<E>(const T x, const U y) noexcept
{
return Class<T, U>::f2<E>(x, y);
}
以下のようによびだせないのは何故ですか?
f<3>(x2, y2);
500デフォルトの名無しさん
2019/02/05(火) 03:50:25.51ID:HIaY+PNB >>499
すみません。一部まちがえました
×static constexpr T f<E>(const T x, const U y) noexcept
○static constexpr T (const T x, const U y) noexcept
これでTとUが引数から引数から推論されて、Eは余っているから明示指定で大丈夫だろうと。
そう思いました。(間違っているようですが。
すみません。一部まちがえました
×static constexpr T f<E>(const T x, const U y) noexcept
○static constexpr T (const T x, const U y) noexcept
これでTとUが引数から引数から推論されて、Eは余っているから明示指定で大丈夫だろうと。
そう思いました。(間違っているようですが。
501はちみつ餃子 ◆8X2XSCHEME
2019/02/05(火) 03:51:46.67ID:VmiK9YL/ >>498
そのコードを書いてある通りに解釈しようとすると、
f という関数テンプレートの部分特殊化なんだけど、
非メンバ関数の部分特殊化は出来ないし、
f<3>(x2, y2); という使用形式に合致しない。
そのコードを書いてある通りに解釈しようとすると、
f という関数テンプレートの部分特殊化なんだけど、
非メンバ関数の部分特殊化は出来ないし、
f<3>(x2, y2); という使用形式に合致しない。
502はちみつ餃子 ◆8X2XSCHEME
2019/02/05(火) 03:53:36.88ID:VmiK9YL/503デフォルトの名無しさん
2019/02/05(火) 04:02:28.79ID:HIaY+PNB505デフォルトの名無しさん
2019/02/05(火) 13:12:17.63ID:DfuuHrrH 多重ループを抜けるのに例外投げるのってあり?
507デフォルトの名無しさん
2019/02/05(火) 13:18:19.94ID:4twphg+x 気兼ねなくgoto使えるチャンスだぞ
508デフォルトの名無しさん
2019/02/05(火) 14:17:13.53ID:X+ZOJjRh goto で多重ループ抜けたとして、ラベルの下には文がなきゃいけないわけだが、何もしたくないときはどんな文を置くの?
509デフォルトの名無しさん
2019/02/05(火) 14:20:01.31ID:FmL0gboT そんなもん 0; でいいじゃん
510デフォルトの名無しさん
2019/02/05(火) 14:30:41.39ID:4twphg+x セミコロンだけでおk
512はちみつ餃子 ◆8X2XSCHEME
2019/02/05(火) 15:12:13.92ID:VmiK9YL/ ところで、多重ループの内側から直接 return するよりは
goto で抜けてから return する方が綺麗かなって私は思うんだけど、
皆の美意識的にはどう思う?
goto で抜けてから return する方が綺麗かなって私は思うんだけど、
皆の美意識的にはどう思う?
513デフォルトの名無しさん
2019/02/05(火) 15:21:55.39ID:3J1ruy+d 抜けた後何もしないのなら、その場でreturnの方が分りやすい
514デフォルトの名無しさん
2019/02/05(火) 15:32:50.28ID:dQJUt0gZ >>504
横からだけどなるほどありがとう
横からだけどなるほどありがとう
515デフォルトの名無しさん
2019/02/05(火) 16:45:37.41ID:nhJ4ZZtC516デフォルトの名無しさん
2019/02/05(火) 17:32:41.77ID:paZD+duB NEST3:
}
NEST2:
}
NEST1:
}
}
NEST2:
}
NEST1:
}
517デフォルトの名無しさん
2019/02/05(火) 17:34:39.81ID:FmL0gboT 個人的にはそのケースは各ループにbreak条件決めて戻るべきだと思ってるけどね
518デフォルトの名無しさん
2019/02/05(火) 17:51:19.55ID:ttk98JAj519デフォルトの名無しさん
2019/02/05(火) 18:50:04.11ID:nhJ4ZZtC520デフォルトの名無しさん
2019/02/05(火) 18:57:45.76ID:ttk98JAj521デフォルトの名無しさん
2019/02/05(火) 19:59:18.98ID:IbtcjqwQ 結局、関数をまともに書けというプログラムの真髄に到達する。
522デフォルトの名無しさん
2019/02/05(火) 20:18:48.97ID:jcSIAavk つCOBOL
523デフォルトの名無しさん
2019/02/05(火) 20:27:12.09ID:S2UV61Jd 関数を書くのがプログラムの真髄w
基本中の基本だろうがw
真髄w
基本中の基本だろうがw
真髄w
525デフォルトの名無しさん
2019/02/05(火) 20:58:34.40ID:qTZt50kC 処理を関数に切り出すとそれまでローカルだったものがグローバルな世界に曝け出されるのが
ちょっと気持ち悪いと思うことがある。
pascalみたいなローカル関数が定義できるといいんだけどね。
ちょっと気持ち悪いと思うことがある。
pascalみたいなローカル関数が定義できるといいんだけどね。
526デフォルトの名無しさん
2019/02/05(火) 21:01:56.73ID:g0g9sCQz >>525
ローカルクラスをファンクタにするのは?
ローカルクラスをファンクタにするのは?
527デフォルトの名無しさん
2019/02/05(火) 21:12:38.61ID:FmL0gboT ぶっちゃけ再利用しないものは関数化しない
528デフォルトの名無しさん
2019/02/05(火) 21:23:59.05ID:4twphg+x プログラム自体が関数だしな
529デフォルトの名無しさん
2019/02/05(火) 21:39:46.18ID:YX6xJwJ1 精々2重ループまでしか書かない。
3重超えるときは、前処理で跳ねるわ。
3重超えるときは、前処理で跳ねるわ。
530デフォルトの名無しさん
2019/02/05(火) 21:50:04.80ID:YX6xJwJ1 >>525
Pimpl, 関数のスコープ内にクラス定義できるし、ラムダ式もある。
Pimpl, 関数のスコープ内にクラス定義できるし、ラムダ式もある。
531デフォルトの名無しさん
2019/02/05(火) 22:03:16.15ID:B24ls1Z9 クラスって全部ファンクタでいいよね
532デフォルトの名無しさん
2019/02/05(火) 22:17:00.68ID:ttk98JAj533デフォルトの名無しさん
2019/02/05(火) 22:41:27.49ID:XWcjjk28 そりゃ素朴にやればヘッダに書くことになるからだろ
つっこむところか?
つっこむところか?
534デフォルトの名無しさん
2019/02/05(火) 22:58:22.32ID:IbtcjqwQ535デフォルトの名無しさん
2019/02/05(火) 23:20:37.88ID:ttk98JAj536デフォルトの名無しさん
2019/02/05(火) 23:30:36.12ID:g0g9sCQz やだなあ冗談やんけ。
そんなお尻真っ赤にして怒るなよ。
そんなお尻真っ赤にして怒るなよ。
537デフォルトの名無しさん
2019/02/05(火) 23:55:24.87ID:J4pnNQ65538デフォルトの名無しさん
2019/02/06(水) 00:00:34.27ID:xEjOz3Cc bar()が独立した関数とするにふさわしい他との依存性が小さい処理内容なら別に分けても良いが、
フローの見かけを簡単にしたいという目的で>>520式の切り出しを乱発したらたちまち債務超過に…
フローの見かけを簡単にしたいという目的で>>520式の切り出しを乱発したらたちまち債務超過に…
539デフォルトの名無しさん
2019/02/06(水) 00:07:33.57ID:8+AMOzIa >>538
フローの見かけを変えたいなどというつまらない目的では無い
責務の切り出しだと最初から言っとるだろーが
責務を適切に見極められないから5重ループなんていう悪魔的なコードを平気で書いちゃうんだよ
フローの見かけを変えたいなどというつまらない目的では無い
責務の切り出しだと最初から言っとるだろーが
責務を適切に見極められないから5重ループなんていう悪魔的なコードを平気で書いちゃうんだよ
540デフォルトの名無しさん
2019/02/06(水) 00:14:56.50ID:8+AMOzIa541デフォルトの名無しさん
2019/02/06(水) 00:18:52.55ID:xEjOz3Cc 5組の集合の総当りとかなら5重ループで書くのがいちばん自然で速い
n組の集合の総当りとか可変になってくるなら数え上げのアルゴリズムを変える
どっちにせよ関数を増やすことは必須ではない
n組の集合の総当りとか可変になってくるなら数え上げのアルゴリズムを変える
どっちにせよ関数を増やすことは必須ではない
542デフォルトの名無しさん
2019/02/06(水) 00:27:22.81ID:8+AMOzIa 内側のループで明らかに何らかの判断を行ってその結果を外側のループが利用してる
ここで行ってる何らかの判断が責務に該当するわけだ
ならばそれをメソッドの切り出して何をしてるのか明らかな名前を付けてやればいい
プログラムってのはこうやって書くんだぜ
もしこれをメソッドにしなければ何らかの判断をすることとその結果を見て何かすることという複数の責務がメソッドに割り当てられたダーティなプログラムになってしまう
ここで行ってる何らかの判断が責務に該当するわけだ
ならばそれをメソッドの切り出して何をしてるのか明らかな名前を付けてやればいい
プログラムってのはこうやって書くんだぜ
もしこれをメソッドにしなければ何らかの判断をすることとその結果を見て何かすることという複数の責務がメソッドに割り当てられたダーティなプログラムになってしまう
543デフォルトの名無しさん
2019/02/06(水) 00:33:36.55ID:xEjOz3Cc >内側のループで明らかに何らかの判断を行ってその結果を外側のループが利用してる
外側の債務を肩代わりする内側への資金供与はどうするんじゃ…
事実上の5重ループのもっとも内側(もっとも数多く繰り返し実行される)で、事実上引数が5個あるも同然の関数をもっとも数多く繰り返し実行するのか…
ループ構造をのまま関数の構造に変換するのはあんま筋のいいアイデアではないと思うワケ
第一なんか変更があったとき直しにくい
外側の債務を肩代わりする内側への資金供与はどうするんじゃ…
事実上の5重ループのもっとも内側(もっとも数多く繰り返し実行される)で、事実上引数が5個あるも同然の関数をもっとも数多く繰り返し実行するのか…
ループ構造をのまま関数の構造に変換するのはあんま筋のいいアイデアではないと思うワケ
第一なんか変更があったとき直しにくい
544デフォルトの名無しさん
2019/02/06(水) 00:36:02.10ID:AKR+nTaH そりゃコードレベルで考えてるからだろう
意味を考えずにコードだけをこねくり回すから後で変更が入るんだよ
意味のある単位で関数化しろ
意味を考えずにコードだけをこねくり回すから後で変更が入るんだよ
意味のある単位で関数化しろ
545デフォルトの名無しさん
2019/02/06(水) 00:37:56.91ID:xEjOz3Cc 意味を考えれ、という為らば過度の多重ループは数え上げのアルゴリズムを変えた(>>543)方が…
546デフォルトの名無しさん
2019/02/06(水) 00:39:50.29ID:8+AMOzIa547デフォルトの名無しさん
2019/02/06(水) 01:10:17.64ID:TluxhF2l 深いネスト書くやつと長い関数・クラス書くやつはダメプログラマ
548デフォルトの名無しさん
2019/02/06(水) 01:14:36.80ID:LZQuj/e3 わしらじじいの時代は関数ごとに1ファイルの.cに分けて書け、と言われたもんじゃった・・・
・・今考えたらアホやな
・・今考えたらアホやな
549デフォルトの名無しさん
2019/02/06(水) 01:14:44.26ID:ynCNotXu 関数型言語だとループ使わねえもんな
550デフォルトの名無しさん
2019/02/06(水) 01:19:14.37ID:TVvP4aoc 全部ファンクタにしてループを抹消しよー
551デフォルトの名無しさん
2019/02/06(水) 01:54:02.43ID:1PkYZi2l C++の殆どのコンパイラはループ自体の最適化はそこそこイケるけど再帰のループへの最適化は多用できるほど強くはない印象ある
functorがマイブームっぽい人が見受けられるけどC++2aに期待かねぇ
functorがマイブームっぽい人が見受けられるけどC++2aに期待かねぇ
552デフォルトの名無しさん
2019/02/06(水) 02:10:57.61ID:tVubCuJx 抽象化してアルゴ切り替えとか便利だし>ファンクタ。
ループ抹消は新興宗教だわ。
ループ抹消は新興宗教だわ。
553デフォルトの名無しさん
2019/02/06(水) 02:17:29.94ID:3iJRb7MF C++自体もはや宗教だろ
554デフォルトの名無しさん
2019/02/06(水) 05:02:26.66ID:e/w8DpDR555デフォルトの名無しさん
2019/02/06(水) 05:06:05.76ID:e/w8DpDR あと、明らかに「5重ループ」は例えに過ぎないのにここに引っかかってる奴も完全バカ
556デフォルトの名無しさん
2019/02/06(水) 07:00:55.30ID:2YrOaQLS 現実のプログラムを書いたことがない奴が机上の空論言ってるんだよね
5重ループのループ変数を外側からijkmnとして
jとkとnを使ってXを計算して
iとjとnを使ってYを計算して
XとYの比較と、kとmとnを使った条件式で分岐して
一方ではXとYとiとnを使った処理をして結果をnのレベルで宣言した配列に入れる
他方ではXとYとjとkとmとnを使った処理をして結果をmのレベルで宣言した別の配列に入れる
そして2つの配列でなんやかんやして結果をさらに別の配列に入れて以下省略
無理矢理分ければ変数と配列のポインタを大量に取る醜くて意味不明な物にしかならない
関数とは「計算」や「処理」や「なんやかんや」を切り出すものであって、ループ構造を破壊して読みにくくするためのものではない
これは現実の例だ
5重ループのループ変数を外側からijkmnとして
jとkとnを使ってXを計算して
iとjとnを使ってYを計算して
XとYの比較と、kとmとnを使った条件式で分岐して
一方ではXとYとiとnを使った処理をして結果をnのレベルで宣言した配列に入れる
他方ではXとYとjとkとmとnを使った処理をして結果をmのレベルで宣言した別の配列に入れる
そして2つの配列でなんやかんやして結果をさらに別の配列に入れて以下省略
無理矢理分ければ変数と配列のポインタを大量に取る醜くて意味不明な物にしかならない
関数とは「計算」や「処理」や「なんやかんや」を切り出すものであって、ループ構造を破壊して読みにくくするためのものではない
これは現実の例だ
557デフォルトの名無しさん
2019/02/06(水) 07:42:14.42ID:PYjwZV54 5重ループで必死過ぎ
558デフォルトの名無しさん
2019/02/06(水) 08:42:11.48ID:dLN9y6Lw まさに関数使うべきところじゃね?
559デフォルトの名無しさん
2019/02/06(水) 09:25:14.44ID:TVKvnrTY 関数に切り出すのは再利用するためだけじゃない
読みやすいコードにするためにも超重要
これが身に染みてわかるようになったら脱初心者
わかってないやつは優れたオープンソースのコードとかもっと読め
五重ループなんてまぁプルリクでrejectされるさ
もちろん捨てコードならどうでもいいけど
読みやすいコードにするためにも超重要
これが身に染みてわかるようになったら脱初心者
わかってないやつは優れたオープンソースのコードとかもっと読め
五重ループなんてまぁプルリクでrejectされるさ
もちろん捨てコードならどうでもいいけど
560デフォルトの名無しさん
2019/02/06(水) 12:16:09.08ID:gpBlA5Jy エディタ次第だけど関数化するくらいならブロックに入れてたたんでおけばよくね
561デフォルトの名無しさん
2019/02/06(水) 12:29:59.92ID:1tCLVB4W 本質的に五層の繰り返し構造をとる処理は五重のループで書くのが正しいんだよ
外側の二層と内側の三層が意味的に分かれてるなら、そりゃ関数に切るのは当たり前だし正しいさ
しかし互いに絡み合った五層繰り返しを行うアルゴリズムは、そのありのままの姿をコードに落とすべきなんだよ
そういうものを見かけのループ階層を減らすために強引に切り刻むの行為はリファクタリングではなくスパゲッティ化と言うんだ
絶対にやってはいけない
外側の二層と内側の三層が意味的に分かれてるなら、そりゃ関数に切るのは当たり前だし正しいさ
しかし互いに絡み合った五層繰り返しを行うアルゴリズムは、そのありのままの姿をコードに落とすべきなんだよ
そういうものを見かけのループ階層を減らすために強引に切り刻むの行為はリファクタリングではなくスパゲッティ化と言うんだ
絶対にやってはいけない
562デフォルトの名無しさん
2019/02/06(水) 12:33:42.12ID:5DsLQSpR563デフォルトの名無しさん
2019/02/06(水) 12:37:20.54ID:gjOdQxAx564デフォルトの名無しさん
2019/02/06(水) 12:40:59.66ID:CtZpHCTy 絡み合った層ってそれほんとに層なの?
565デフォルトの名無しさん
2019/02/06(水) 12:47:26.83ID:gjOdQxAx 糞をいくら切り刻んでも糞
それでいいだろもう
それでいいだろもう
566デフォルトの名無しさん
2019/02/06(水) 14:09:03.30ID:9JAqyHM+ cppコーダーのコードは汚い。5重ループとか平気で書く無神経さ
一回でいいからJavaやC#、ruby、などクリーンな言語を学んだほうがいい
一回でいいからJavaやC#、ruby、などクリーンな言語を学んだほうがいい
567デフォルトの名無しさん
2019/02/06(水) 14:13:54.24ID:QvJUH+Yd ΣΣΣΣΣ
と書く代わりに
Σ_{i,j,k,lm}
と書けってか?
どーでいい
議論するだけ無駄だろwwww
C++にとって可読性なんてもはや関係ない
と書く代わりに
Σ_{i,j,k,lm}
と書けってか?
どーでいい
議論するだけ無駄だろwwww
C++にとって可読性なんてもはや関係ない
568デフォルトの名無しさん
2019/02/06(水) 14:17:48.99ID:2YrIvpU1 そして過度にLinqを使いまくって遅くなるのでした
569デフォルトの名無しさん
2019/02/06(水) 14:35:47.42ID:tVubCuJx 正規化されたDB使うかな、ガチの5重ループやるなら。
計算量O(log n)~O(n)位を目安にシステム設計する。
計算量O(log n)~O(n)位を目安にシステム設計する。
570デフォルトの名無しさん
2019/02/06(水) 15:30:17.65ID:kcXvzDdu571デフォルトの名無しさん
2019/02/06(水) 16:16:53.27ID:QvJUH+Yd572デフォルトの名無しさん
2019/02/06(水) 18:49:37.81ID:1tCLVB4W >>563
コンテナを舐めて順番に処理するとか検索するとかシーケンスを比較するとか
そんなのをどんどん処理単位に切って抽象化して行くことは素晴らしいし誰も反対しないね
有害なのはループは全部そう出来るというエアプログラマーの思い込み
コンテナを舐めて順番に処理するとか検索するとかシーケンスを比較するとか
そんなのをどんどん処理単位に切って抽象化して行くことは素晴らしいし誰も反対しないね
有害なのはループは全部そう出来るというエアプログラマーの思い込み
573デフォルトの名無しさん
2019/02/06(水) 18:57:19.55ID:cXGNS95r >>572
もっとも有害なのはごく稀な場合を引き合いに出して一般論を否定しようとするやつ
もっとも有害なのはごく稀な場合を引き合いに出して一般論を否定しようとするやつ
574デフォルトの名無しさん
2019/02/06(水) 18:58:32.19ID:ytX3d0vu 江添さんディスってやるなよw
575デフォルトの名無しさん
2019/02/06(水) 19:15:14.64ID:1tCLVB4W ほらね
「ごく稀」というまさに思い込み
しょっちゅうとは言わないが、無視できるほど少なくもないよ
分野にもよるだろうけどさ
プログラムって結局現実の問題を解決するツールなんだから
現実世界の汚さも表現しないといけないんだよ
汚物を表すコードは汚物に見えるべきであって、見せかけで綺麗なフリしようとしたって失敗するしいいことは何もない
「ごく稀」というまさに思い込み
しょっちゅうとは言わないが、無視できるほど少なくもないよ
分野にもよるだろうけどさ
プログラムって結局現実の問題を解決するツールなんだから
現実世界の汚さも表現しないといけないんだよ
汚物を表すコードは汚物に見えるべきであって、見せかけで綺麗なフリしようとしたって失敗するしいいことは何もない
576デフォルトの名無しさん
2019/02/06(水) 19:18:24.90ID:cXGNS95r577デフォルトの名無しさん
2019/02/06(水) 19:27:52.65ID:JChC73Df ID:cXGNS95rが言ってる稀ってのは、
「処理単位に切れる再利用しやすいループ」でない、依存性の強いループが稀だと言いたいのか?
「処理単位に切れる再利用しやすいループ」でない、依存性の強いループが稀だと言いたいのか?
578デフォルトの名無しさん
2019/02/06(水) 19:33:09.12ID:Uzc23Z4W 実際のところ、5重ループってインデントが深くなる以外に何か問題あるの?
579デフォルトの名無しさん
2019/02/06(水) 19:53:38.31ID:tVubCuJx 五つの状態変数を把握しないといけない所。
不定のタイミングでバグが起きて、他人の書いたそれを時間に追われて読まねばならん。
不定のタイミングでバグが起きて、他人の書いたそれを時間に追われて読まねばならん。
580デフォルトの名無しさん
2019/02/06(水) 20:06:21.69ID:cXGNS95r >>577
単一の責務で何重にもループすることは稀と言ってる
単一の責務で何重にもループすることは稀と言ってる
581デフォルトの名無しさん
2019/02/06(水) 20:07:36.88ID:Uzc23Z4W それ、関数に切り出して5重ループを無くしたら解消するものなの。
582デフォルトの名無しさん
2019/02/06(水) 20:08:15.91ID:cXGNS95r するよ
583デフォルトの名無しさん
2019/02/06(水) 20:40:44.38ID:Uzc23Z4W いや、すまん。お前に聞いたんじゃねぇ。
584デフォルトの名無しさん
2019/02/06(水) 20:44:39.52ID:y0lrsHx+ ここまで意固地になって関数化することを否定する意味がわからん。
585デフォルトの名無しさん
2019/02/06(水) 20:56:05.35ID:3iJRb7MF 書きたいように書け
以上
以上
586デフォルトの名無しさん
2019/02/06(水) 21:10:48.59ID:M+a7jld1 ループの深さだけじゃないよねジッサイの判断ってのは
幅というか
リズムが単調で深いだけなら
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
for (int k = 0; k < c; k++) foo(i, j, k);
こーいうのはたぶん許容されるでしょ
そうじゃなくてよくあるのは
for (int i = 0; i < a; i++) {
// 何行も何行もうじゃうじゃ
for (int j = 0; j < b; j++) {
// 色んな変数散らかしつつうじゃうじゃ
for (int k = 0; k < c; k++) {
// ifとか入りながら行数増やしつつうじゃうじゃ
}
}
}
こーいうのが我々を苦しめるわけで
幅というか
リズムが単調で深いだけなら
for (int i = 0; i < a; i++)
for (int j = 0; j < b; j++)
for (int k = 0; k < c; k++) foo(i, j, k);
こーいうのはたぶん許容されるでしょ
そうじゃなくてよくあるのは
for (int i = 0; i < a; i++) {
// 何行も何行もうじゃうじゃ
for (int j = 0; j < b; j++) {
// 色んな変数散らかしつつうじゃうじゃ
for (int k = 0; k < c; k++) {
// ifとか入りながら行数増やしつつうじゃうじゃ
}
}
}
こーいうのが我々を苦しめるわけで
587デフォルトの名無しさん
2019/02/06(水) 21:45:43.76ID:JChC73Df 関数化するかどうかというのはループの深さがどうこうという基準ではないだろう、と
>>586みたいなのも、再利用しようがなく、アルゴリズムの単純化もそれ以上出来ないならそのままであるべきだろ
関数化すりゃいいってもんじゃない
>>586みたいなのも、再利用しようがなく、アルゴリズムの単純化もそれ以上出来ないならそのままであるべきだろ
関数化すりゃいいってもんじゃない
588デフォルトの名無しさん
2019/02/06(水) 22:07:06.24ID:TVKvnrTY fooって関数だろ
589デフォルトの名無しさん
2019/02/06(水) 22:07:14.67ID:HAC9I//j どうしようもなく分割統治できない感じのアルゴリズムの例って何かあるのかね。
590デフォルトの名無しさん
2019/02/06(水) 22:40:02.49ID:cXGNS95r591デフォルトの名無しさん
2019/02/06(水) 23:09:01.70ID:JChC73Df592デフォルトの名無しさん
2019/02/06(水) 23:11:42.95ID:JChC73Df ループの深さがどうこうじゃないと言ってんのにループの形式だけで判断?
お前偉そうに人を初心者呼ばわりしたいだけだろ
お前偉そうに人を初心者呼ばわりしたいだけだろ
593デフォルトの名無しさん
2019/02/06(水) 23:11:46.32ID:3iJRb7MF C++は宗教だから異なる宗派同士がわかりあえることはない
不毛な議論
不毛な議論
594デフォルトの名無しさん
2019/02/06(水) 23:58:01.47ID:ytX3d0vu せやな
595デフォルトの名無しさん
2019/02/07(木) 00:29:29.04ID:jeiltBqQ >>504
ありがとうございます。たしかにできました。ただそれだけでな呼び出しも
return Class<T, U>::f2<E>(x, y);
から
return Class<T, U>::template f2<E>(x, y);
に変更する必要がありました。
template ←これがどういう役割なのかわかりませんが。
f2が何かと曖昧さを回避する役割があるのかと思いますが、
何と曖昧なのかよくわからないところです。
ありがとうございます。たしかにできました。ただそれだけでな呼び出しも
return Class<T, U>::f2<E>(x, y);
から
return Class<T, U>::template f2<E>(x, y);
に変更する必要がありました。
template ←これがどういう役割なのかわかりませんが。
f2が何かと曖昧さを回避する役割があるのかと思いますが、
何と曖昧なのかよくわからないところです。
596デフォルトの名無しさん
2019/02/07(木) 00:36:56.13ID:FsbblVW+ この板の1日の訪問者数って、学校の1クラス程度なの?
597デフォルトの名無しさん
2019/02/07(木) 00:43:20.80ID:BE/93ARs598デフォルトの名無しさん
2019/02/07(木) 00:47:59.60ID:EjTN/ClM >>579
おまえ状態変数の意味分かってないだろwwww
おまえ状態変数の意味分かってないだろwwww
599デフォルトの名無しさん
2019/02/07(木) 01:15:09.76ID:jeiltBqQ600はちみつ餃子 ◆8X2XSCHEME
2019/02/07(木) 01:28:48.78ID:YGlzE19V >>599
テンプレートの展開結果は実際に展開されるまでわからん。
Class クラスに <T, U> 型を適用した結果として
出来る f2 が型なのか変数なのかテンプレートなのかは f を定義した時点ではまだわからんし、
わからんのでは構文解析できん。
もし f がテンプレートではないのであれば、
f の定義時点で Class の展開はされるから、
f2 が何であるかはわかる。
テンプレートの展開結果は実際に展開されるまでわからん。
Class クラスに <T, U> 型を適用した結果として
出来る f2 が型なのか変数なのかテンプレートなのかは f を定義した時点ではまだわからんし、
わからんのでは構文解析できん。
もし f がテンプレートではないのであれば、
f の定義時点で Class の展開はされるから、
f2 が何であるかはわかる。
601デフォルトの名無しさん
2019/02/07(木) 02:06:35.36ID:b+LBP2oh 700重ループなら次のように書いたらええ
int cn[701] = { ... }; // [0..699]: ループ回数(ここでは全部0より大きいとする)、[700]: 番兵
int ci[701] = { 0 }; // [0..700]: ループ変数
cn[700] = 2; // 番兵
do {
(ci[0..699]に依存する処理)
ci[0]++;
for (int i = 0; ci[i] >= cn[i]; i++) {
ci[i] = 0;
ci[i + 1]++;
}
} while (c[700] == 0);
いや知らんけど多分、
int cn[701] = { ... }; // [0..699]: ループ回数(ここでは全部0より大きいとする)、[700]: 番兵
int ci[701] = { 0 }; // [0..700]: ループ変数
cn[700] = 2; // 番兵
do {
(ci[0..699]に依存する処理)
ci[0]++;
for (int i = 0; ci[i] >= cn[i]; i++) {
ci[i] = 0;
ci[i + 1]++;
}
} while (c[700] == 0);
いや知らんけど多分、
602デフォルトの名無しさん
2019/02/07(木) 02:12:21.12ID:jeiltBqQ >>600
そういうことすか。親切にありがとうございました。
そういうことすか。親切にありがとうございました。
603デフォルトの名無しさん
2019/02/07(木) 12:06:02.32ID:FsbblVW+ 【製作中 の wasm(WebAssembly)/MS Windows 共通の Window System】
http://nowsmartsoft.atwebpages.com/
このサイトを訪れたユニークユーザー数は、「1」だ。おいらのことだよ。
ひきこもりの L より。
http://nowsmartsoft.atwebpages.com/
このサイトを訪れたユニークユーザー数は、「1」だ。おいらのことだよ。
ひきこもりの L より。
605デフォルトの名無しさん
2019/02/07(木) 17:21:14.65ID:fRacvqu0 DeathNoteの作者によれば、別人らしい。
606デフォルトの名無しさん
2019/02/07(木) 17:22:57.71ID:fRacvqu0 まだ、ユニークユーザー数は、5 だ。
reddit という世界最大の掲示板(?)にも書いてきたけど、時差の問題で
まだなのかな。でも、テレビなんかとは全然視聴者数が違うみたいだ。
reddit という世界最大の掲示板(?)にも書いてきたけど、時差の問題で
まだなのかな。でも、テレビなんかとは全然視聴者数が違うみたいだ。
607デフォルトの名無しさん
2019/02/07(木) 18:39:38.68ID:86zgFFA7 見てきたけど、これはもしかして良いものなのでは?
608デフォルトの名無しさん
2019/02/07(木) 19:08:50.57ID:fRacvqu0 wasm に興味を持つ人が増えるといいな。
609デフォルトの名無しさん
2019/02/07(木) 19:30:41.56ID:86zgFFA7 ブラウザで普通に動いてびっくり。
610デフォルトの名無しさん
2019/02/07(木) 19:52:59.41ID:Y+oxZntz 何がすごいのか教えてくれないか‥
CPU で直接実行してこその asm であって、ブラウザ上の仮想マシーンで実行するとかいう asm に何の意味があるのか?
612デフォルトの名無しさん
2019/02/07(木) 20:02:49.47ID:86zgFFA7 同じソースコードがウィンドウズとブラウザで動くらしい。
613デフォルトの名無しさん
2019/02/07(木) 20:04:39.28ID:86zgFFA7 C++ユーザーがウェブにリーチできるのは凄いのでは。
614デフォルトの名無しさん
2019/02/07(木) 20:05:17.04ID:Y+oxZntz >>612
確かにそれはすごいけど、このブラウザで動いてるやつがどう凄いのか理解できない
確かにそれはすごいけど、このブラウザで動いてるやつがどう凄いのか理解できない
615デフォルトの名無しさん
2019/02/07(木) 20:06:42.02ID:ln/cuVF1 何に使うのか知らんけど選択肢が増えるのは良い
616デフォルトの名無しさん
2019/02/07(木) 20:07:52.71ID:e0jRAAR5 なにかにつけてwebは再発明の歴史だよな
617デフォルトの名無しさん
2019/02/07(木) 20:10:25.85ID:ln/cuVF1 >>613
Qtがhttpサーバー作ってたからそれでよくね
Qtがhttpサーバー作ってたからそれでよくね
618デフォルトの名無しさん
2019/02/07(木) 20:21:51.16ID:+esGdO37 いちいちユニークユーザーを監視されるのが嫌だら見てないけど
emscripten と何がちがうんだ?
emscripten と何がちがうんだ?
619デフォルトの名無しさん
2019/02/07(木) 22:10:43.10ID:fRacvqu0 ユニークユーザー数は、13人。その内オイラが2人分にカウントされている。
実は、プログラム技術板は、1日20人くらいしか来てない事は誰にも知られ
ちゃいけない秘密・・・。
実は、プログラム技術板は、1日20人くらいしか来てない事は誰にも知られ
ちゃいけない秘密・・・。
620デフォルトの名無しさん
2019/02/07(木) 22:13:04.24ID:fRacvqu0 そしてこのスレは、1日15人も来てない・・・。
むむむ。
むむむ。
621デフォルトの名無しさん
2019/02/07(木) 22:16:47.32ID:fRacvqu0 リンク先の訪問数。
日本 24
大阪府 7 // オイラは滋賀だが、多分ここに入っている。
不明 7
東京都 5
富山県 3
神奈川県 1
埼玉県 1
プログラム技術板の実態。
もし異論がある人は、上のリンク先を訪問して証明してくれ。
日本 24
大阪府 7 // オイラは滋賀だが、多分ここに入っている。
不明 7
東京都 5
富山県 3
神奈川県 1
埼玉県 1
プログラム技術板の実態。
もし異論がある人は、上のリンク先を訪問して証明してくれ。
622デフォルトの名無しさん
2019/02/07(木) 22:19:27.09ID:fRacvqu0 【ここの住人の個人情報】
東京、大阪、神奈川、埼玉、富山、滋賀。
全部で 10人くらいしかいなかった。(笑)
東京、大阪、神奈川、埼玉、富山、滋賀。
全部で 10人くらいしかいなかった。(笑)
623デフォルトの名無しさん
2019/02/07(木) 22:23:40.07ID:kI0a4U49 >>618
https://mevius.5ch.net/test/read.cgi/tech/1547549448/38
>>614
そんなに凄くはないよ。
ちゃんと思ったことが出来るかどうか実験してみてる最中。
https://mevius.5ch.net/test/read.cgi/tech/1547549448/38
>>614
そんなに凄くはないよ。
ちゃんと思ったことが出来るかどうか実験してみてる最中。
624デフォルトの名無しさん
2019/02/07(木) 22:26:29.96ID:fRacvqu0 >>617
あれって、apacheやmongooseみたいな「WebServer」を作るための
関数を用意したってことではないの?
ただ、どっちにしろ、Qt も、既にWebで動くものが出来ている(?)
と昨日くらいにWikipediaで見たけど。
あれって、apacheやmongooseみたいな「WebServer」を作るための
関数を用意したってことではないの?
ただ、どっちにしろ、Qt も、既にWebで動くものが出来ている(?)
と昨日くらいにWikipediaで見たけど。
625デフォルトの名無しさん
2019/02/07(木) 22:26:41.11ID:HqsSiLjf たった10人がまるで自分達が世界の中心であるかのようにC++の仕様を論じていたのか。滑稽極まりない。
626デフォルトの名無しさん
2019/02/07(木) 22:27:02.58ID:6lKliUgm 謎富山
627デフォルトの名無しさん
2019/02/07(木) 22:30:26.79ID:fRacvqu0 >>611
個人的には、Windows Native版を普段は使って、人に見せびらかしたい・・・・
ではなく、「見てもらいたい」時に、Web 版を使いたい。
学校とか会社で、その辺にあるマシンやスマホで、作ったものを人に見せられる
のは快楽・・・、ではなく「生きがい」になるんじゃないかと。
個人的には、Windows Native版を普段は使って、人に見せびらかしたい・・・・
ではなく、「見てもらいたい」時に、Web 版を使いたい。
学校とか会社で、その辺にあるマシンやスマホで、作ったものを人に見せられる
のは快楽・・・、ではなく「生きがい」になるんじゃないかと。
628デフォルトの名無しさん
2019/02/07(木) 22:35:10.46ID:oaRutm/f629デフォルトの名無しさん
2019/02/07(木) 22:36:06.35ID:fRacvqu0 あと、圧縮してない現状で、HTMLとJSとWASMを全部合わせて 83KB しかない。
個人情報をさらけ出せてみんな大好きなアクセス解析の Ninja Analayzer を
使っているので、その分起動は少し遅くなってるけど、それがなければ、
起動は1秒かからないかもしれない。
PCへのインストールもないのに、起動が1秒かからない。
個人情報をさらけ出せてみんな大好きなアクセス解析の Ninja Analayzer を
使っているので、その分起動は少し遅くなってるけど、それがなければ、
起動は1秒かからないかもしれない。
PCへのインストールもないのに、起動が1秒かからない。
630デフォルトの名無しさん
2019/02/07(木) 22:36:26.80ID:makgq+Wp 今のほぼオワコンの5chなんてどこもこんなもんでしょ
期待しすぎ
期待しすぎ
631デフォルトの名無しさん
2019/02/08(金) 09:15:56.40ID:W2gEFcGi 正直そこまですごくはないよね
unityのゲームがブラウザで出来る方がよっぽど凄いとは思う
unityのゲームがブラウザで出来る方がよっぽど凄いとは思う
632デフォルトの名無しさん
2019/02/08(金) 10:31:27.58ID:xI0+6qTx Native版(Windows x86, x64 *.exe) と、VM版(wasm) の両方が同じC++ソースから
作れることが特徴。いまのところそういう ToolKit は少ない。
作れることが特徴。いまのところそういう ToolKit は少ない。
633デフォルトの名無しさん
2019/02/08(金) 10:42:45.25ID:xI0+6qTx Window Resizing時のマウスカーソルが上下、左右逆向きになることが残ってるけど、
LinuxのFireFox上でも普通に動作するし、今後も動作しなくなる可能性は低い。
個人的な予想だと、XamarineがMSに買収され(小国が大国に吸収されて君主
が入れ替わった)てしまった、C#は、今後、Linuxでは、動かなくなって
行く心配がある。それではMultiplatformの意味がない。
LinuxのFireFox上でも普通に動作するし、今後も動作しなくなる可能性は低い。
個人的な予想だと、XamarineがMSに買収され(小国が大国に吸収されて君主
が入れ替わった)てしまった、C#は、今後、Linuxでは、動かなくなって
行く心配がある。それではMultiplatformの意味がない。
634デフォルトの名無しさん
2019/02/08(金) 10:50:54.40ID:xI0+6qTx さらに、wasm は Webアプリなので、Appleの審査も、AppleStoreへの登録料
も不要なハズ。Appleが何か言ってきたらEUに怒ってもらう。
も不要なハズ。Appleが何か言ってきたらEUに怒ってもらう。
635デフォルトの名無しさん
2019/02/08(金) 10:55:20.69ID:yf5AQ092 そろそろスレ違いだから、終わりにしたら?
専用のスレ立ってるんだからそっちでやればいい。書き込みしてるのはいつも同じ一人の人だけっぽいが。構って欲しいからとこのスレで続けるのはやめてくれ。
専用のスレ立ってるんだからそっちでやればいい。書き込みしてるのはいつも同じ一人の人だけっぽいが。構って欲しいからとこのスレで続けるのはやめてくれ。
636デフォルトの名無しさん
2019/02/08(金) 11:20:09.28ID:xI0+6qTx637デフォルトの名無しさん
2019/02/08(金) 11:36:02.62ID:wLzz2pae >>636
それPWAは使い物にならないから糞ストアを使わざるを得なかったという趣旨の記事なんだが、自己批判したいのか?
お前がwasmでアプリを作ったところで、純粋なブラウザスクリプトでできることなんて極めて限られている
作ったものを配布しようと思えばお前も結局この記事と同じ地獄に直面することになる
それPWAは使い物にならないから糞ストアを使わざるを得なかったという趣旨の記事なんだが、自己批判したいのか?
お前がwasmでアプリを作ったところで、純粋なブラウザスクリプトでできることなんて極めて限られている
作ったものを配布しようと思えばお前も結局この記事と同じ地獄に直面することになる
638デフォルトの名無しさん
2019/02/08(金) 11:44:42.10ID:U5TpKLby 林檎なんか無視でいい
639デフォルトの名無しさん
2019/02/08(金) 12:36:33.89ID:xI0+6qTx640デフォルトの名無しさん
2019/02/08(金) 12:47:59.34ID:xI0+6qTx641デフォルトの名無しさん
2019/02/08(金) 19:37:08.92ID:F5yzRsxV 5重ループに引っかかってるのって全然アルゴ知らん奴だろw
グラフとか座標の走査ではザラに出るからw
グラフとか座標の走査ではザラに出るからw
642デフォルトの名無しさん
2019/02/08(金) 19:41:52.97ID:U10rELvE あ〜、知ってる知ってる。
アルゴのリズムね。
あの陽気な感じで踊るやつね。
アルゴのリズムね。
あの陽気な感じで踊るやつね。
643デフォルトの名無しさん
2019/02/08(金) 20:14:27.60ID:MVNcnzeY 一人ランバダより凄い?
644デフォルトの名無しさん
2019/02/08(金) 20:21:07.41ID:sEIv5tif あぁあれな。アルゴリズム記述用言語の。つかったことねえわ(´・ω・`)
645デフォルトの名無しさん
2019/02/08(金) 21:18:45.10ID:AHMSeatY lambdaをランバダと読むのは俺だけではなかったようだな
646デフォルトの名無しさん
2019/02/08(金) 22:20:01.31ID:gZF5aOC3647デフォルトの名無しさん
2019/02/08(金) 22:20:59.73ID:gZF5aOC3648デフォルトの名無しさん
2019/02/09(土) 00:21:38.44ID:MbpT91OC このスレも監視されてるのかな。
649デフォルトの名無しさん
2019/02/09(土) 01:07:22.91ID:3dJvh84X >>648
実は、アクセス解析って、個人情報なんか見れないよ。
名前や住所なんてものは全く分からない。
ブラウザが外部にはそういう情報を渡さないようにしっかりプログラムされてるから。
自分で試しに使ってみたら分かるけど、アクセスしてきた人の使ってるプロバイダ
のIPアドレスから、大体の住んでる地域が分かって、使ってるOSと、使ってる
画面の解像度出てくるけど、住んでる地域も画面の解像度も間違ってることが多い。
OSも、Windowsであることは分かっても、詳細なバージョンまでは不明なことも多い。
例えば、「7」と「それ以外」のように表示されてしまう。
使ってるブラウザも大体は分かっても、ChromeとSafariの区別が付かなかったり
するらしい。
実は、アクセス解析って、個人情報なんか見れないよ。
名前や住所なんてものは全く分からない。
ブラウザが外部にはそういう情報を渡さないようにしっかりプログラムされてるから。
自分で試しに使ってみたら分かるけど、アクセスしてきた人の使ってるプロバイダ
のIPアドレスから、大体の住んでる地域が分かって、使ってるOSと、使ってる
画面の解像度出てくるけど、住んでる地域も画面の解像度も間違ってることが多い。
OSも、Windowsであることは分かっても、詳細なバージョンまでは不明なことも多い。
例えば、「7」と「それ以外」のように表示されてしまう。
使ってるブラウザも大体は分かっても、ChromeとSafariの区別が付かなかったり
するらしい。
650デフォルトの名無しさん
2019/02/09(土) 01:13:15.09ID:3dJvh84X あと、テレビドラマみたいに、ハッカーなら何でも出来るみたいなことは嘘。
ハッカーが「なんでもお見通し」みたいなこと自ら豪語したりしてるのは、
マルウェアを感染させ終わってるからだよ。普通は感染してないからそんな
情報はハッカーにも見えない。なお、マルウェアに感染させるのは簡単ではない。
大体、大きな組織だとお馬鹿な社員が一部にいて、基礎的なやってはならないことを
やって感染してしまってるだけ。
ハッカーが「なんでもお見通し」みたいなこと自ら豪語したりしてるのは、
マルウェアを感染させ終わってるからだよ。普通は感染してないからそんな
情報はハッカーにも見えない。なお、マルウェアに感染させるのは簡単ではない。
大体、大きな組織だとお馬鹿な社員が一部にいて、基礎的なやってはならないことを
やって感染してしまってるだけ。
651デフォルトの名無しさん
2019/02/09(土) 02:05:42.75ID:xfmM6W79 なに急に
ビビるんですけど
ビビるんですけど
652デフォルトの名無しさん
2019/02/09(土) 04:07:36.95ID:jgVZ/PYq >>650
もういい加減やめてくれないか
もういい加減やめてくれないか
653デフォルトの名無しさん
2019/02/09(土) 07:21:17.45ID:Js3eMSlM いやDOS
PCDOS
PCDOS
654デフォルトの名無しさん
2019/02/09(土) 13:31:56.82ID:Js3eMSlM >>649
そらipアドレスと個人名結びつけるのはプロバイダしかできませんがな
収容鯖も個人の住居エリアじゃなく他県に割り当てられる場合もあって、
個人情報からはかけ離れてる場合も多い
http://www.iplocationfinder.com/
そらipアドレスと個人名結びつけるのはプロバイダしかできませんがな
収容鯖も個人の住居エリアじゃなく他県に割り当てられる場合もあって、
個人情報からはかけ離れてる場合も多い
http://www.iplocationfinder.com/
655デフォルトの名無しさん
2019/02/09(土) 13:35:22.03ID:MbpT91OC ということはプロバイダもグルなのか。
656デフォルトの名無しさん
2019/02/09(土) 14:28:01.31ID:3dJvh84X657デフォルトの名無しさん
2019/02/09(土) 21:05:40.77ID:wqDSs9XB 君たちそろそろCプラスプラスの話にもどりなさい
658さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/09(土) 21:07:55.36ID:kG75YWtZ ヘッダー内の定数変数の設置方法について、詳しい人、いらっしゃいますか?
659デフォルトの名無しさん
2019/02/09(土) 21:38:48.35ID:5t5ZiBxh >>658
どの程度のレベルの質問かによる。
どの程度のレベルの質問かによる。
660デフォルトの名無しさん
2019/02/09(土) 21:44:14.22ID:c2FJmEij >定数変数
<質問の意味不明。再入力せよ>
<質問の意味不明。再入力せよ>
661デフォルトの名無しさん
2019/02/09(土) 22:34:04.43ID:jk57Ug9J >>660
おまえは定数変数を感じるか?
おまえは定数変数を感じるか?
662デフォルトの名無しさん
2019/02/09(土) 22:42:04.90ID:onf/I33C ROM焼きしても良いのか、RAMにコピーしておかないといけない
のか小一時間質問を
のか小一時間質問を
663デフォルトの名無しさん
2019/02/09(土) 22:55:27.78ID:NnmcfWng664デフォルトの名無しさん
2019/02/11(月) 00:29:43.89ID:JDr8Dttm しーぽぽ、しーぽっぽ。
665デフォルトの名無しさん
2019/02/11(月) 04:30:46.19ID:Q8pHabNH c#とc++どっちからはじめたらいいですか
pythonを少し触ったことがある程度です
c++でしかできないことがあるでしょうか
とりあえずファイラを作りたいのです
pythonを少し触ったことがある程度です
c++でしかできないことがあるでしょうか
とりあえずファイラを作りたいのです
666さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 04:49:21.15ID:BEdrdhIs C#ならモバイルもストアもイケるし、人間に分かりやすい。ただ蓄積が少ない。
C++なら大量の遺産が利用できるが、ちょっと生産性が悪くややこしい。
C++ならWinFileというMITライセンスのソフトを参考にするといい。
C++なら大量の遺産が利用できるが、ちょっと生産性が悪くややこしい。
C++ならWinFileというMITライセンスのソフトを参考にするといい。
667デフォルトの名無しさん
2019/02/11(月) 05:08:41.19ID:Q8pHabNH たしか、共用も出来るんですよね
基本C#で、C++にしかできない部分だけc++という形でいいんでしょうか
基本C#で、C++にしかできない部分だけc++という形でいいんでしょうか
668さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/11(月) 05:24:08.70ID:fD0IDjkv エクスプローラのようなファイラーを製作するためのキーワードは:
ツリービュー、リストビュー、ファイルアイコン取得、メニューバー、ポップアップメニュー、ファイル操作、ダイアログボックス、シェル通知、シェルコンテキストメニュー。
大変だが、これらを押さえれば、C#でもC++でも作れる。
ツリービュー、リストビュー、ファイルアイコン取得、メニューバー、ポップアップメニュー、ファイル操作、ダイアログボックス、シェル通知、シェルコンテキストメニュー。
大変だが、これらを押さえれば、C#でもC++でも作れる。
669デフォルトの名無しさん
2019/02/11(月) 05:50:04.11ID:Q8pHabNH ↑がんばります
サクサクできるようになりたい
サクサクできるようになりたい
670デフォルトの名無しさん
2019/02/11(月) 06:08:56.92ID:iabdC9wT long long a = 1LL;
ってさぁ、
long long a = 1;
と何が違うのよ?
ってさぁ、
long long a = 1;
と何が違うのよ?
671デフォルトの名無しさん
2019/02/11(月) 06:16:27.68ID:ObneqQQm ソースファイルサイズが2バイト違います
672デフォルトの名無しさん
2019/02/11(月) 06:35:27.07ID:iabdC9wT673デフォルトの名無しさん
2019/02/11(月) 07:42:02.90ID:MkFOBvt9 >>670
今時のコンパイラではありえないと思うがintの1をlong longに変換してaに代入するコードを吐くかもしれない
今時のコンパイラではありえないと思うがintの1をlong longに変換してaに代入するコードを吐くかもしれない
674デフォルトの名無しさん
2019/02/11(月) 08:05:38.42ID:VezX3Wg+ auto i = 1LL;
これも有り。
これも有り。
675デフォルトの名無しさん
2019/02/11(月) 11:23:03.19ID:IofovA3h 静的解析ツールで型の明示忘れを指摘される
676デフォルトの名無しさん
2019/02/11(月) 11:40:26.90ID:lx/oeSqQ そんなツールは捨てちまえ
677デフォルトの名無しさん
2019/02/11(月) 12:28:53.00ID:itY+kGJR C#で書かれたC#以外のコンパイラとかあるんだっけ
678デフォルトの名無しさん
2019/02/11(月) 12:44:30.74ID:VezX3Wg+ >>675 その解析ツールはC++11対応してるの?
679デフォルトの名無しさん
2019/02/11(月) 12:53:52.59ID:MmPS3pUZ その程度静的解析持ち出すまでもなく
コンパイラのwarningにできるでしょ
コンパイラのwarningにできるでしょ
680デフォルトの名無しさん
2019/02/11(月) 12:57:08.64ID:MkFOBvt9 >>679
auto使ったら警告されるの?
auto使ったら警告されるの?
681デフォルトの名無しさん
2019/02/11(月) 13:12:41.82ID:MmPS3pUZ え、静的解析でauto禁止にするって話だったの?
静的解析というよりどっかのしょうもないガイドライン準拠か調べるオマケレベルの機能だろそれ
静的解析というよりどっかのしょうもないガイドライン準拠か調べるオマケレベルの機能だろそれ
682デフォルトの名無しさん
2019/02/11(月) 13:57:18.54ID:VezX3Wg+ 1LLとlong long型の1と明示されている変数に対して警告出すのおかしくない?
683デフォルトの名無しさん
2019/02/11(月) 14:20:07.79ID:IofovA3h >>682
いやそれは良いそうしたら指摘されない
いやそれは良いそうしたら指摘されない
684デフォルトの名無しさん
2019/02/11(月) 14:20:08.61ID:K6Q69q9Y 世の中にはauto使うと読みにくくなるから使わないで、って言う人が本当に居るから・・・
685デフォルトの名無しさん
2019/02/11(月) 14:34:11.51ID:VezX3Wg+ まじか・・・
686デフォルトの名無しさん
2019/02/11(月) 14:42:14.51ID:DnOcmNTU 読みにくくなる場合は確かにあるだろ
687デフォルトの名無しさん
2019/02/11(月) 14:46:12.16ID:MkFOBvt9 読みにくくなる場合があるから「全部」禁止な
って言う老害
って言う老害
688デフォルトの名無しさん
2019/02/11(月) 14:49:55.35ID:ytaXyYiL std::vector<std::pair<…>>
689デフォルトの名無しさん
2019/02/11(月) 15:03:25.67ID:ja3aMy7M 読みやすくするためとテンプレートのためにautoを使うんじゃないの
690デフォルトの名無しさん
2019/02/11(月) 15:39:17.91ID:K6Q69q9Y autoで読みにくくなる所って大体変数名をちゃんとすれば良い
それで足りないなら仕方ないから型を書く
それで足りないなら仕方ないから型を書く
691はちみつ餃子 ◆8X2XSCHEME
2019/02/11(月) 15:45:49.19ID:eS7AzULV 静的解析ツールの挙動を好意的に解釈すれば、
「暗黙の処理」に対して「それって本当にプログラマの意図した通り?」
ってのが機械的には読み取り難いことだから厳しい側に倒してるんじゃない?
仮にそうだとしたら、
機械で「わからない」箇所を人間が検証してねっていう話なわけで、
よくない作法だからやめてねというわけではないのでは。
ただ、テスト駆動開発で最初からテストしやすいプログラム構成をするように、
静的解析ツールを開発に活用する前提で静的解析しやすりプログラムを書くというポリシーも
それはそれでひとつの選択ではあるだろ。
「暗黙の処理」に対して「それって本当にプログラマの意図した通り?」
ってのが機械的には読み取り難いことだから厳しい側に倒してるんじゃない?
仮にそうだとしたら、
機械で「わからない」箇所を人間が検証してねっていう話なわけで、
よくない作法だからやめてねというわけではないのでは。
ただ、テスト駆動開発で最初からテストしやすいプログラム構成をするように、
静的解析ツールを開発に活用する前提で静的解析しやすりプログラムを書くというポリシーも
それはそれでひとつの選択ではあるだろ。
692デフォルトの名無しさん
2019/02/11(月) 16:30:57.99ID:IofovA3h 今使っている静的解析ツールはIPAのこのルール↓↓↓への適応をチェックするやつ
ttps://www.ipa.go.jp/sec/publish/tn16-007.html
(ツール自体はIPAとは無関係なサードパーティー製
autoはそれ自体は別に何とも言われなかったと思う
一方、>>670の下の方
long i = 1;
とすると、R2.4.1あたりの指摘を食らっていたと思う
ttps://www.ipa.go.jp/sec/publish/tn16-007.html
(ツール自体はIPAとは無関係なサードパーティー製
autoはそれ自体は別に何とも言われなかったと思う
一方、>>670の下の方
long i = 1;
とすると、R2.4.1あたりの指摘を食らっていたと思う
693デフォルトの名無しさん
2019/02/11(月) 16:33:09.42ID:IofovA3h ひょっとしたらR2.5.1かもしれん…
最終的に指摘を出なくするので記憶モード、
最終的に指摘を出なくするので記憶モード、
694デフォルトの名無しさん
2019/02/11(月) 16:45:03.75ID:ja3aMy7M なんかクソとクソを組み合わせてるな
clang一つあれば全部解決だろうに
clang一つあれば全部解決だろうに
695デフォルトの名無しさん
2019/02/11(月) 16:50:29.08ID:OF3/TB8A >>687
こういうバカが当時は最新だったが今はレガシーなコードを残していくという負の連鎖。
こういうバカが当時は最新だったが今はレガシーなコードを残していくという負の連鎖。
696デフォルトの名無しさん
2019/02/11(月) 17:08:48.59ID:paWvS3ye >>673
int の 1 を long long に変換したらそれは 1LL じゃないの?
int の 1 を long long に変換したらそれは 1LL じゃないの?
697デフォルトの名無しさん
2019/02/11(月) 17:39:52.78ID:MkFOBvt9698デフォルトの名無しさん
2019/02/11(月) 18:23:19.76ID:j549IniP 構造体や複数の変数の中から必要な変数を扱うときに
auto & var1 =
ってエイリアス的なノリで使ってるけどこれはありだよな?
auto & var1 =
ってエイリアス的なノリで使ってるけどこれはありだよな?
699デフォルトの名無しさん
2019/02/11(月) 18:26:33.23ID:ja3aMy7M いいよ
700デフォルトの名無しさん
2019/02/11(月) 18:28:31.07ID:36SxxiQl 構造化束縛もくるしどんどん使うべき
701デフォルトの名無しさん
2019/02/11(月) 18:49:54.66ID:DnOcmNTU C++が束縛ってイキッた数学用語使うのなんかいらっとくるんだよね
理論もへったくれもない建て増し温泉旅館のクソ言語のくせに
理論もへったくれもない建て増し温泉旅館のクソ言語のくせに
702デフォルトの名無しさん
2019/02/11(月) 18:59:55.40ID:K6Q69q9Y 構造化バインディングって呼んでもいいんだよ別に
703デフォルトの名無しさん
2019/02/11(月) 19:02:03.68ID:ja3aMy7M ストラクチャードバインディングスって言え
704デフォルトの名無しさん
2019/02/11(月) 19:50:47.74ID:JDr8Dttm C++20でいろいろな武装がついて、ますます訳が分からなくなってきた。
705デフォルトの名無しさん
2019/02/11(月) 20:02:04.46ID:36SxxiQl c++20で追加される機能で気になるのある?
706デフォルトの名無しさん
2019/02/11(月) 21:28:28.23ID:Nunz6pAN ついにコンセプト入るんやろ?
やることが増えただけとも言えるが
クラステンプレートの引数推論は改良されないのかな・・
コンストラクト時にしか省略できない&パラメータが残る形で省略できないのは不便
やることが増えただけとも言えるが
クラステンプレートの引数推論は改良されないのかな・・
コンストラクト時にしか省略できない&パラメータが残る形で省略できないのは不便
707デフォルトの名無しさん
2019/02/11(月) 21:34:25.05ID:K6Q69q9Y <=>、契約、range...
結構盛りだくさんだよね
結構盛りだくさんだよね
708デフォルトの名無しさん
2019/02/11(月) 22:31:10.87ID:zUKSDces 脱法建て増し建築
709デフォルトの名無しさん
2019/02/11(月) 22:32:26.99ID:IofovA3h 一体何と戦っているのかってカンジ
710デフォルトの名無しさん
2019/02/12(火) 01:08:47.17ID:Q7cKpfag コンパイル時に解決できることは何でもやります。
711デフォルトの名無しさん
2019/02/12(火) 02:16:21.61ID:xDY2FToe 大学で2年CをやったんだけどC++を学習するのかなり楽になる?
712デフォルトの名無しさん
2019/02/12(火) 02:25:52.97ID:QWumZAWG 大学次第かなぁ
CができればC++の学習はそら楽になるよ、相対的には
CができればC++の学習はそら楽になるよ、相対的には
713デフォルトの名無しさん
2019/02/12(火) 03:07:37.43ID:4IIAFVax Cの勉強に2年使ってる時点でろくな大学じゃない
714デフォルトの名無しさん
2019/02/12(火) 03:19:13.37ID:VJfrEW+T >>711
C++はC言語のほとんどの部分を内包したようなものだから、先にC固有の部分を理解した上でC++に入るのはかなりやり易いとは思う。
あと、Cでは当たり前のやり方がC++では推奨されないやり方になる部分もあるので、考え方の切り替えは必要になる。推奨されないといっても深い理解のためにはけして無駄になるわけではない。
まあそれでも十分大変だが。
C++はC言語のほとんどの部分を内包したようなものだから、先にC固有の部分を理解した上でC++に入るのはかなりやり易いとは思う。
あと、Cでは当たり前のやり方がC++では推奨されないやり方になる部分もあるので、考え方の切り替えは必要になる。推奨されないといっても深い理解のためにはけして無駄になるわけではない。
まあそれでも十分大変だが。
716デフォルトの名無しさん
2019/02/12(火) 04:28:58.59ID:sqMjE8Yx mallocとかsetjmp/longjmpとか
変数は関数の頭じゃなくて使う直前に宣言するとか
変数は関数の頭じゃなくて使う直前に宣言するとか
717デフォルトの名無しさん
2019/02/12(火) 06:12:35.00ID:DAeR3Vqi ファイラ作る場合c+とc#どちらがいいのですか?
いずれ3dもやりたいです
いずれ3dもやりたいです
718デフォルトの名無しさん
2019/02/12(火) 07:02:19.46ID:a49a8vnI ご本尊のハゲ先生は「Cを知らなくてもC++を使える」と書いてるな。
一方『独習C++』でシルトさんは「Cを知らなきゃC++は難しい」と書いてる。
C以外のプログラミング言語を知ってるかどうかに依存するのか知れんし、
「この本ではCと共通する部分は説明しないよ」程度の意味かも知れんけど。
一方『独習C++』でシルトさんは「Cを知らなきゃC++は難しい」と書いてる。
C以外のプログラミング言語を知ってるかどうかに依存するのか知れんし、
「この本ではCと共通する部分は説明しないよ」程度の意味かも知れんけど。
719デフォルトの名無しさん
2019/02/12(火) 07:29:33.60ID:SvKCMiwA mallocは非推奨なんですか?
720デフォルトの名無しさん
2019/02/12(火) 08:01:36.93ID:/ZK7yd+2 malloc/freeだとコンストラクタ・デストラクタが呼ばれないからね。
placement newと組み合わせて、余計なmallocを減らして高速化をねらう使い方もあるにはあるけど、そういのはコンテナクラスでまとめちゃうだろうし。
placement newと組み合わせて、余計なmallocを減らして高速化をねらう使い方もあるにはあるけど、そういのはコンテナクラスでまとめちゃうだろうし。
721デフォルトの名無しさん
2019/02/12(火) 08:26:33.80ID:WW36R8Qd >>718
まあ難しいけど使えるという状態はあるからその2つは矛盾してるわけじゃない
まあ難しいけど使えるという状態はあるからその2つは矛盾してるわけじゃない
722デフォルトの名無しさん
2019/02/12(火) 10:06:17.35ID:dWGWBM0h >>719
malloc() の戻り値は「void *」で、C だとどんな型のポインタ変数に代入しても
エラーや警告が出なかったが、C++ だとエラーが出る。
C++ は型を非常に大切にしていて、
TYPE *ptr = new TYPE; や
TYPE *ptr = new TYPE[N];
のように書くのが標準。理由は、必ずコンストラクタを呼ぶようにするためと、
型の異なるポインタには cast しない限りは絶対に代入できないようにするため
だと思われる。というのは、delete ptr とした場合に、ptr の型によってどの class の
デストラクタが呼ばれるかが変わったり、ptr->func() とした場合に、func が、
どの class のメンバ関数であるかをコンパイラが知るため。わずかでも違っていれば
結果が変わってきてしまう。これが C++ が大きなプログラム開発に向いている
所以でもあって、わずかな間違いでもコンパイラが見つけてくれる確率が高くなっている。
C++ で malloc() をエラーを起こさずに使うには、コンストラクタが(絶対に)存在しない
ところのBYTE 配列の場合ですら、
BYTE *ptr = (BYTE *)malloc(N);
のように書かなくてははならない。 これは面倒なので(←嘘です)、
BYTE *ptr = new BYTE[N];
と書く習慣になっている。
malloc() の戻り値は「void *」で、C だとどんな型のポインタ変数に代入しても
エラーや警告が出なかったが、C++ だとエラーが出る。
C++ は型を非常に大切にしていて、
TYPE *ptr = new TYPE; や
TYPE *ptr = new TYPE[N];
のように書くのが標準。理由は、必ずコンストラクタを呼ぶようにするためと、
型の異なるポインタには cast しない限りは絶対に代入できないようにするため
だと思われる。というのは、delete ptr とした場合に、ptr の型によってどの class の
デストラクタが呼ばれるかが変わったり、ptr->func() とした場合に、func が、
どの class のメンバ関数であるかをコンパイラが知るため。わずかでも違っていれば
結果が変わってきてしまう。これが C++ が大きなプログラム開発に向いている
所以でもあって、わずかな間違いでもコンパイラが見つけてくれる確率が高くなっている。
C++ で malloc() をエラーを起こさずに使うには、コンストラクタが(絶対に)存在しない
ところのBYTE 配列の場合ですら、
BYTE *ptr = (BYTE *)malloc(N);
のように書かなくてははならない。 これは面倒なので(←嘘です)、
BYTE *ptr = new BYTE[N];
と書く習慣になっている。
723デフォルトの名無しさん
2019/02/12(火) 11:29:59.12ID:8lolhehX delete [] ptr; じゃね
724デフォルトの名無しさん
2019/02/12(火) 11:46:23.37ID:LAva8DO1 >>723
TYPE *ptr = new TYPE;
の場合は、delete ptr; で、
TYPE *ptr = new TYPE[N];
の場合は、delete [] ptr;
と書くのが C++ の原定義。ここが、C++ のちょっと怖い気がするところ。
間違えてても、コンパイル段階ではエラーになってくれない。
TYPE *ptr = new TYPE;
の場合は、delete ptr; で、
TYPE *ptr = new TYPE[N];
の場合は、delete [] ptr;
と書くのが C++ の原定義。ここが、C++ のちょっと怖い気がするところ。
間違えてても、コンパイル段階ではエラーになってくれない。
725デフォルトの名無しさん
2019/02/12(火) 11:55:45.12ID:8lolhehX ほんそれω
726デフォルトの名無しさん
2019/02/12(火) 12:07:41.98ID:rbyp88AN deleteにカッコつけるのってちょっと配列を特別視してて嫌だわ。
配列を実現するにしても、[]表記を捨ててもいいんじゃないの。
配列を実現するにしても、[]表記を捨ててもいいんじゃないの。
727デフォルトの名無しさん
2019/02/12(火) 12:14:13.71ID:NT60/ZFg その辺は禿先生も失敗だったと認めてるけど今更変えられないんだよ
new[]は一切使わず、配列をnewするときはstd::arrayを使うのが今時の推奨スタイルです
new[]は一切使わず、配列をnewするときはstd::arrayを使うのが今時の推奨スタイルです
728デフォルトの名無しさん
2019/02/12(火) 12:14:29.27ID:2XqJFBgN 今時はstd::unique_ptrを使えという人もいるかも知れん。
newとdeleteでいいと思うが念のため。
newとdeleteでいいと思うが念のため。
729デフォルトの名無しさん
2019/02/12(火) 14:38:12.08ID:J9X/W0+J Linuxのシステムコールオススメ本ありますか?
730はちみつ餃子 ◆8X2XSCHEME
2019/02/12(火) 14:52:25.40ID:jYEPbswv たしかオブジェクトは、それと同じ型を要素とする大きさが 1 の配列と同じレイアウトだっていう保証は
どっかに書いてなかったっけ? (C++ じゃなくて C だっけ? うろ覚えですまん。)
それを前提とすると delete と delete[] の区別を導入してしまったのは不用意だよな。
malloc / free では区別なしに出来てたわけだし。
どっかに書いてなかったっけ? (C++ じゃなくて C だっけ? うろ覚えですまん。)
それを前提とすると delete と delete[] の区別を導入してしまったのは不用意だよな。
malloc / free では区別なしに出来てたわけだし。
731デフォルトの名無しさん
2019/02/12(火) 14:54:20.86ID:ihSW1Mfy >>730
オーバーロード
オーバーロード
732デフォルトの名無しさん
2019/02/12(火) 15:08:09.96ID:dWGWBM0h >>730
ヘッダ部分を除いたデータ部分としては完全に同じといっても過言ではないんだけど、
ptr = new TYPE; とした場合は、C++ の仕様上は
メモリブロックの先頭に「配列の場合には埋め込まれるところの要素数」をコンパイラは
必ずしも埋め込まなくても良いという事になっていて、その場合、delete 命令から見ると、
要素数1の配列とは同じではない。ただし、VC++ の場合には、危険を避けるため、
delete と delete [] は、どちらを書いても問題なく動作するようになっている
という文書を読んだ事が有る。
(C++元々の)仕様は、なるべくメモリ使用量も検査量も少なくして効率を上げる、
という哲学から来るものなんだけど、型検査をがちがちにして安全性を高めている一方で、
非常に危険な仕様になっていると言えなくもない。ただし、TYPE が小さなオブジェクトの
場合、new TYPE において、メモリブロックのヘッダ部分を配列と同じ構造にしてしまうの
は、結構、メモリの無駄使いにはなる。ただし、それもC#なんかの無駄と比べれば
すずめの涙程度の全然問題ない程度のものではある。しかし、それだけ、C++が効率が
良いはずではある。
ヘッダ部分を除いたデータ部分としては完全に同じといっても過言ではないんだけど、
ptr = new TYPE; とした場合は、C++ の仕様上は
メモリブロックの先頭に「配列の場合には埋め込まれるところの要素数」をコンパイラは
必ずしも埋め込まなくても良いという事になっていて、その場合、delete 命令から見ると、
要素数1の配列とは同じではない。ただし、VC++ の場合には、危険を避けるため、
delete と delete [] は、どちらを書いても問題なく動作するようになっている
という文書を読んだ事が有る。
(C++元々の)仕様は、なるべくメモリ使用量も検査量も少なくして効率を上げる、
という哲学から来るものなんだけど、型検査をがちがちにして安全性を高めている一方で、
非常に危険な仕様になっていると言えなくもない。ただし、TYPE が小さなオブジェクトの
場合、new TYPE において、メモリブロックのヘッダ部分を配列と同じ構造にしてしまうの
は、結構、メモリの無駄使いにはなる。ただし、それもC#なんかの無駄と比べれば
すずめの涙程度の全然問題ない程度のものではある。しかし、それだけ、C++が効率が
良いはずではある。
733はちみつ餃子 ◆8X2XSCHEME
2019/02/12(火) 15:18:28.58ID:jYEPbswv >>732
new はランタイムの処理だ。
同じメモリプールから切り出してくるならどちらにせよ大きさの管理は必要で、
コンパイル時に型が (すなわち必要なバイトサイズが) わかっているからといって、
それで効率的にはなる余地はあんまりあるとは思えんな。
new はランタイムの処理だ。
同じメモリプールから切り出してくるならどちらにせよ大きさの管理は必要で、
コンパイル時に型が (すなわち必要なバイトサイズが) わかっているからといって、
それで効率的にはなる余地はあんまりあるとは思えんな。
734デフォルトの名無しさん
2019/02/12(火) 15:22:00.28ID:dWGWBM0h >>733
要素数が正確にわからないと、デストラクタを呼び出す回数が分からない。
要素数が正確にわからないと、デストラクタを呼び出す回数が分からない。
736デフォルトの名無しさん
2019/02/12(火) 15:44:00.70ID:dWGWBM0h >>735
生のメモリブロックも、大きさは管理されているといえばされているんだけど、
理由は分からないけど、サイズを取得するための _msize(ptr) が存在しない
ライブラリがある。あと、TYPE が小さい場合、アラインの問題もあって、
MBのサイズがTYPE が2個以上入ってしまうようになってしまう場合も有り得て、
要素数を計算する再にその場合の処理を適切にしないといけない。
恐らく出来ないわけではないはずなんだけど、そういう変な事情も
考慮して元祖の C++ は設計されたんじゃないかな。
生のメモリブロックも、大きさは管理されているといえばされているんだけど、
理由は分からないけど、サイズを取得するための _msize(ptr) が存在しない
ライブラリがある。あと、TYPE が小さい場合、アラインの問題もあって、
MBのサイズがTYPE が2個以上入ってしまうようになってしまう場合も有り得て、
要素数を計算する再にその場合の処理を適切にしないといけない。
恐らく出来ないわけではないはずなんだけど、そういう変な事情も
考慮して元祖の C++ は設計されたんじゃないかな。
737デフォルトの名無しさん
2019/02/12(火) 17:37:31.15ID:LAva8DO1 日本で最も使いやすい無料レンタルサーバーといえば、xrea だろう。
しかし、bit defender traffic light は、「黄色ランプ」になる。
これも、日本人に対するいじめの一環と考えられよう。
一応の理由としては、xrea で設置されていたバナー広告が過去に
マルウェア感染していた事があるかららしい。
いずれも日本で最も使いやすかったり普及していたり、日本人にとっては
最も重要なものばかりだ。
しかし、bit defender traffic light は、「黄色ランプ」になる。
これも、日本人に対するいじめの一環と考えられよう。
一応の理由としては、xrea で設置されていたバナー広告が過去に
マルウェア感染していた事があるかららしい。
いずれも日本で最も使いやすかったり普及していたり、日本人にとっては
最も重要なものばかりだ。
739デフォルトの名無しさん
2019/02/12(火) 18:28:54.36ID:a7xlnsdf pmrとかいう名前空間が出来ててワロ。
740デフォルトの名無しさん
2019/02/12(火) 18:55:34.22ID:rlDMzVZE スマートポインタを返す関数?について質問です
Smp<Foo> f = foo(); // こういうのがあるとき
if (foo()->bar) {} // こういうのとか
handle h = foo()->handle; // こういうのは安全なんですか?
または、スマポのデストラクタが動く瞬間はいつですか?
Smp<Foo> f = foo(); // こういうのがあるとき
if (foo()->bar) {} // こういうのとか
handle h = foo()->handle; // こういうのは安全なんですか?
または、スマポのデストラクタが動く瞬間はいつですか?
741デフォルトの名無しさん
2019/02/12(火) 19:31:38.96ID:ihSW1Mfy 実装による
742デフォルトの名無しさん
2019/02/12(火) 19:33:57.75ID:ujVln6bm >>740
uniequ_ptr/shared_ptrはチェックしない
ただ、operator bool()を持ってるから取得してすぐチェックしてやれば以降は安全
デストラクタが呼ばれるのは寿命が尽きるとき
1番上の例はfのスコープの終わり、下2つはその行の終わり
uniequ_ptr/shared_ptrはチェックしない
ただ、operator bool()を持ってるから取得してすぐチェックしてやれば以降は安全
デストラクタが呼ばれるのは寿命が尽きるとき
1番上の例はfのスコープの終わり、下2つはその行の終わり
743デフォルトの名無しさん
2019/02/12(火) 19:52:41.54ID:rlDMzVZE operator bool()について勉強になりました
if (f = foo() && f->bar) {}
こういう書き方にすればnull関係のチェックとなるというわけですね
> 下2つはその行の終わり
なるほどですね、実はそれを恐れていましたw
あほっぽいですが->barする直前にもしやデストラクタ動く?と怯えました
ありがとうございます
if (f = foo() && f->bar) {}
こういう書き方にすればnull関係のチェックとなるというわけですね
> 下2つはその行の終わり
なるほどですね、実はそれを恐れていましたw
あほっぽいですが->barする直前にもしやデストラクタ動く?と怯えました
ありがとうございます
744デフォルトの名無しさん
2019/02/12(火) 20:32:31.62ID:ujVln6bm >>743
ifの場合はその後に続く{}の終わりまで延長する、一応
ifの場合はその後に続く{}の終わりまで延長する、一応
745はちみつ餃子 ◆8X2XSCHEME
2019/02/12(火) 20:59:11.79ID:jYEPbswv >>743
最新の C++ (C++17) なら
if(auto f=foo(); f && f->bar) {}
というように初期化と条件式をセミコロンで区切った書き方もできる。
ここで宣言した変数は if 文全体の終わりがスコープの終わりになるので、
範囲が限定的、かつ、スコープの終わりがわかりやすいので、
積極的に活用したいところ。
最新の C++ (C++17) なら
if(auto f=foo(); f && f->bar) {}
というように初期化と条件式をセミコロンで区切った書き方もできる。
ここで宣言した変数は if 文全体の終わりがスコープの終わりになるので、
範囲が限定的、かつ、スコープの終わりがわかりやすいので、
積極的に活用したいところ。
746はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 00:18:46.08ID:VqRfiaP4747デフォルトの名無しさん
2019/02/13(水) 01:07:33.18ID:eXt03lvN 今までは構文の都合でconstであるべき変数もconstにできないことがあったが↓↓↓、
char c;
while ((c = *(p++), (c != '\0' && isprint(c))) {
/*...*/
}
// 以下変数cを使わないコード
これからはconstにできる↓↓↓やたー!
while (const char c = *(p++); (c != '\0' && isprint(c))) {
/*...*/
}
char c;
while ((c = *(p++), (c != '\0' && isprint(c))) {
/*...*/
}
// 以下変数cを使わないコード
これからはconstにできる↓↓↓やたー!
while (const char c = *(p++); (c != '\0' && isprint(c))) {
/*...*/
}
748デフォルトの名無しさん
2019/02/13(水) 01:12:36.96ID:eXt03lvN もうfor文とかも見境無し!
for (int i = 0; const char c = str[i]; c != '\0'; i++) {
/*...*/
}
すばらしい…!
for (int i = 0; const char c = str[i]; c != '\0'; i++) {
/*...*/
}
すばらしい…!
749デフォルトの名無しさん
2019/02/13(水) 01:37:32.24ID:fRMQw/V1 shared_ptrじゃなくてunique_ptrじゃないとだめなときってあるの?
750デフォルトの名無しさん
2019/02/13(水) 01:40:02.25ID:+/4xK8ow あるよ。
751デフォルトの名無しさん
2019/02/13(水) 01:44:30.84ID:lB+7RHzg 普通のポインタとしての運用ができる
752デフォルトの名無しさん
2019/02/13(水) 01:58:56.40ID:fRMQw/V1 shared_ptrでもできるくね
753デフォルトの名無しさん
2019/02/13(水) 02:01:16.26ID:lB+7RHzg ごめんshared_ptrが
754デフォルトの名無しさん
2019/02/13(水) 02:02:23.91ID:RwVg7GE7 基本sharedでいいけどリソース節約したいところではuniqueって感じ?
755デフォルトの名無しさん
2019/02/13(水) 03:25:00.08ID:EX0tVwso shared_future, shaed_mutex を使い分けるポイントって何でしょうか?
756デフォルトの名無しさん
2019/02/13(水) 12:15:19.31ID:e6JJwbK6 基本uniqueで、いろんな所に取り回したいのがsharedかな
所有者がはっきりしてればunique、パタパタ受け渡したり色んなので共有するならsharedが自分の基準
所有者がはっきりしてればunique、パタパタ受け渡したり色んなので共有するならsharedが自分の基準
757デフォルトの名無しさん
2019/02/13(水) 17:50:02.15ID:9xiZOSOZ c++のデスクトップアプリケーションをVS2017で作ろうと思うのですが、フォームデザイナーはないのでしょうか?
ボタンの位置などは全部コードで作る感じでしょうか?
ボタンの位置などは全部コードで作る感じでしょうか?
758デフォルトの名無しさん
2019/02/13(水) 17:52:20.25ID:lB+7RHzg mfcを追加でインストールしろ
759さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 17:52:50.90ID:25aOYuUG >>757
リソースエディタ、ダイアログエディタがそれに該当する。Win32のリソース参照。
リソースエディタ、ダイアログエディタがそれに該当する。Win32のリソース参照。
760さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 17:59:32.77ID:25aOYuUG リソースエディタでダイアログを作って、DialogBoxまたはCreateDialog系の関数でダイアログを作成できる。
761デフォルトの名無しさん
2019/02/13(水) 18:13:16.31ID:9xiZOSOZ ↑mfcというのは今はあまり使われないそうですが、c++でインターフェースを作る場合、
今どきは何が使われるんでしょうか?
ある程度いい見た目にするのなら、自作しなければいけない感じですか?
今どきは何が使われるんでしょうか?
ある程度いい見た目にするのなら、自作しなければいけない感じですか?
762はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 18:17:11.29ID:VqRfiaP4763さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 18:17:30.33ID:25aOYuUG >>761
wxWidgetとGTK3がオススメ。キャリアがほしけりゃ、Win32なんか窓から捨ててしまえ。
wxWidgetとGTK3がオススメ。キャリアがほしけりゃ、Win32なんか窓から捨ててしまえ。
764デフォルトの名無しさん
2019/02/13(水) 18:25:09.79ID:9xiZOSOZ ↑ありがとうございます
調べてみます
調べてみます
765デフォルトの名無しさん
2019/02/13(水) 18:25:23.74ID:lB+7RHzg >>761
Visual studioでは標準的
ただマイクロソフトから見切られているので今後の発展は無い
最近ならQtが人気
初心者には取っつきづらいのと日本語情報がほとんど無いのとライセンスがちょっと厳しいのとVSで完結させることはできないが移植性が高くガンガン更新されているから将来性は一番ある
今時なデザインにしたいならQt内で独自言語のQMLを使ってつくるかWebEngineをつかってhtmlとjavascriptと連携させて作る必要がある
どちらも簡単にはできないけど
Visual studioでは標準的
ただマイクロソフトから見切られているので今後の発展は無い
最近ならQtが人気
初心者には取っつきづらいのと日本語情報がほとんど無いのとライセンスがちょっと厳しいのとVSで完結させることはできないが移植性が高くガンガン更新されているから将来性は一番ある
今時なデザインにしたいならQt内で独自言語のQMLを使ってつくるかWebEngineをつかってhtmlとjavascriptと連携させて作る必要がある
どちらも簡単にはできないけど
766さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/13(水) 18:31:17.25ID:25aOYuUG Qt5なんてダウンロードに数十分かかるアホなビッグシステム。
767デフォルトの名無しさん
2019/02/13(水) 18:31:55.58ID:RwVg7GE7 使うものだけダウンロードすればいいじゃん
768デフォルトの名無しさん
2019/02/13(水) 18:34:59.46ID:lB+7RHzg アホが釣れたようだな
769デフォルトの名無しさん
2019/02/13(水) 18:40:53.11ID:QnNf1eu6 >>757
Tcl/Tk
Tcl/Tk
770デフォルトの名無しさん
2019/02/13(水) 18:42:26.28ID:QnNf1eu6 >>766
ほんそれ
ほんそれ
771デフォルトの名無しさん
2019/02/13(水) 18:53:39.36ID:lB+7RHzg 使いもしないオプションを付けて時間がかかるとか言ってる人がいるってマジ?
772デフォルトの名無しさん
2019/02/13(水) 19:05:18.58ID:9xiZOSOZ >>756
htmlやcssはできるので調べてみます
htmlやcssはできるので調べてみます
773デフォルトの名無しさん
2019/02/13(水) 19:08:10.14ID:9xiZOSOZ もしかしてc++って個人で使うようなものではなかったりしますか?
774デフォルトの名無しさん
2019/02/13(水) 19:19:16.70ID:e0d6KWci775はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 20:01:48.29ID:VqRfiaP4 間違いなく C++ に出来ることは多いのだが、
要はそこまで必要な場合ってそんなに多くないでしょって話。
画像処理とか仮想通貨マイニングみたいな性能のチューニングがギリギリまで必要ってのなら
C++ を使う甲斐があるけど、 GUI を記述するのに C++ を使うのはそれほど強い必然性はない。
本来の処理をする部分が C++ で書かれているなら、
あえて GUI だけ別言語にする必要もないなっていう程度のことだと思う。
要はそこまで必要な場合ってそんなに多くないでしょって話。
画像処理とか仮想通貨マイニングみたいな性能のチューニングがギリギリまで必要ってのなら
C++ を使う甲斐があるけど、 GUI を記述するのに C++ を使うのはそれほど強い必然性はない。
本来の処理をする部分が C++ で書かれているなら、
あえて GUI だけ別言語にする必要もないなっていう程度のことだと思う。
776デフォルトの名無しさん
2019/02/13(水) 20:06:47.12ID:xfyW+H6K 意外とここアマチュア多かったのかな?
仕事でもないのにわざわざC++触るやつの気が知れん
仕事でもないのにわざわざC++触るやつの気が知れん
777デフォルトの名無しさん
2019/02/13(水) 20:24:14.55ID:RwVg7GE7 型がきっちりしてるから処理追いやすくていいと思うんだけどなあ
Javascriptで書かれたオープンソースなんて読んでもわけわからん
Javascriptで書かれたオープンソースなんて読んでもわけわからん
778はちみつ餃子 ◆8X2XSCHEME
2019/02/13(水) 20:36:26.96ID:VqRfiaP4 ワイはアマチュアやで。 むしろプロは必要もないところまで取り組まんやろ。
知り合いにプロのゲームプログラマ (誰もが知っている有名シミュレーションゲームの老舗メーカーに所属)
がいるけど、 C++ の言語機能に関する知識なんて、びっくりするほど貧弱やぞ。
知り合いにプロのゲームプログラマ (誰もが知っている有名シミュレーションゲームの老舗メーカーに所属)
がいるけど、 C++ の言語機能に関する知識なんて、びっくりするほど貧弱やぞ。
779デフォルトの名無しさん
2019/02/13(水) 20:51:52.56ID:lB+7RHzg ゲームプログラマは特殊だわ
あいつら例外なくゲームのことしか頭にないし
エンジン作ってる部署の人なら詳しい人もたくさん居るだろう
あいつら例外なくゲームのことしか頭にないし
エンジン作ってる部署の人なら詳しい人もたくさん居るだろう
780デフォルトの名無しさん
2019/02/13(水) 20:52:55.58ID:C2ClsFHD 日吉の会社ね
781デフォルトの名無しさん
2019/02/13(水) 20:57:07.30ID:BFnAt9lr 可読性とデバッグのバランス考えると、
C中心で毛が生えた程度に++浅く
使うのが一番楽。
物理計算とかAIとかのが重要で
C++の文法遊びや多重にネストした
テンプレ遊びに深く付き合っても、
生産性上がんないからなあ。
C中心で毛が生えた程度に++浅く
使うのが一番楽。
物理計算とかAIとかのが重要で
C++の文法遊びや多重にネストした
テンプレ遊びに深く付き合っても、
生産性上がんないからなあ。
782デフォルトの名無しさん
2019/02/13(水) 21:36:58.08ID:D91GFqhb テンプレみたいなコンパイラ毎に動作の異なるもんに執着してたら明らかに生産性下がるわ。
783デフォルトの名無しさん
2019/02/13(水) 22:13:34.76ID:9vYYaAAU ++で生産性上がらんとか言ってる人はOOP理解出来てないだけだろ
俺も昔は同じで++に謂れのない敵意を持ってた
でも他のモダンな言語に乗り換えてファウラーやエヴァンスなどを読み漁ってOOPに習熟してから++に戻ってきたら今度は逆にCがゴミに思えるようになったよ
まあしかしこの壁を乗り越えるまでが大変なんだけどね
俺も昔は同じで++に謂れのない敵意を持ってた
でも他のモダンな言語に乗り換えてファウラーやエヴァンスなどを読み漁ってOOPに習熟してから++に戻ってきたら今度は逆にCがゴミに思えるようになったよ
まあしかしこの壁を乗り越えるまでが大変なんだけどね
784デフォルトの名無しさん
2019/02/13(水) 22:28:44.60ID:UVXSHadg 競技プログラミングはC++一択なんだが
785デフォルトの名無しさん
2019/02/13(水) 23:15:55.01ID:rqUgXbGq C++はクラスの記述コストが高すぎて真面目にOOPするには辛いわ
モダンな言語と比較して、心理的にどうしてもクラスやメソッドの粒度が大きくなりがち
モダンな言語と比較して、心理的にどうしてもクラスやメソッドの粒度が大きくなりがち
786デフォルトの名無しさん
2019/02/13(水) 23:33:32.80ID:FNLRUtkm C++クラスの最大の恩恵はRAII
ガベコレなし、値指向、デストラクタ最強
ガベコレなし、値指向、デストラクタ最強
787デフォルトの名無しさん
2019/02/13(水) 23:39:30.60ID:eXt03lvN C++は破壊的代入ができるから嫌
デフォルトがconstでないとか、言語としてどうなの…
デフォルトがconstでないとか、言語としてどうなの…
788デフォルトの名無しさん
2019/02/13(水) 23:40:51.03ID:D91GFqhb はいはいrust,rust
789デフォルトの名無しさん
2019/02/13(水) 23:45:11.06ID:lB+7RHzg お客さんが来たぞ
790デフォルトの名無しさん
2019/02/14(木) 05:24:13.40ID:SFw402Pv >>774
なるほど、自分はcgやりたいのでC++使うしかない感じですが、とりあえずc#をまともにできるようになります
なるほど、自分はcgやりたいのでC++使うしかない感じですが、とりあえずc#をまともにできるようになります
791デフォルトの名無しさん
2019/02/14(木) 16:05:08.53ID:b/dX4O0G >>782
jsみたいにブラウザ毎に動作の異なるもんに執着してたら明らかに生産性下がるわ。
jsみたいにブラウザ毎に動作の異なるもんに執着してたら明らかに生産性下がるわ。
792デフォルトの名無しさん
2019/02/14(木) 16:21:32.04ID:VFIxp5Qu クソとクソを比較するな
793デフォルトの名無しさん
2019/02/14(木) 16:58:10.52ID:2/stHPZ4 >>791
いまどきもそうなのか?
いまどきもそうなのか?
794デフォルトの名無しさん
2019/02/14(木) 18:27:36.97ID:1/Iln0l0 ブラウザごとに動作が異なるのは、マイクロソフトが憎いからであって、影響力を失った今、マイクロソフトと違う動作にする必要が無いような気がする。
795デフォルトの名無しさん
2019/02/14(木) 18:37:23.11ID:P/UAeoar まだデスクトップでは絶大なる影響力があるから駄目だ。
凋落のメドも立ってない。
凋落のメドも立ってない。
796デフォルトの名無しさん
2019/02/14(木) 18:54:11.85ID:VFIxp5Qu そしてGUIライブラリ開発者が萎えてQt一強になったりwebview的なものが流行るんですね
もうおしまいだわ
もうおしまいだわ
797デフォルトの名無しさん
2019/02/14(木) 19:01:20.69ID:DfU+cSua 未来ではリテラシーが高まってCUIが標準になってるよ
GUIはエンタメ分野でだけ生き残る
GUIはエンタメ分野でだけ生き残る
798デフォルトの名無しさん
2019/02/14(木) 19:11:38.67ID:1/Iln0l0 Windowsタブレットは中々イケてるけどな。
ちょっとだけ未来が見えるんだけど、惜しい、まだ未来じゃない。
って感じ。
手書きは流行ると思うよ。
電車の中でキーボード打つのは無理だけど、手書きなら何とかなる。
でも、ペン高いし、文字認識は驚くほどの精度だけど、図は描きにくかったり。
まだ未来は来てないんだよね。
ちょっとだけ未来が見えるんだけど、惜しい、まだ未来じゃない。
って感じ。
手書きは流行ると思うよ。
電車の中でキーボード打つのは無理だけど、手書きなら何とかなる。
でも、ペン高いし、文字認識は驚くほどの精度だけど、図は描きにくかったり。
まだ未来は来てないんだよね。
799デフォルトの名無しさん
2019/02/14(木) 23:05:43.78ID:5Y0/XHoW ウィンドーズホンは未来だった(過去形
800デフォルトの名無しさん
2019/02/15(金) 00:09:02.90ID:GRt3HKgN 参照渡しについて質問です
void hoge(const int &x) ってすると int以外の型を渡すと危険ですか?
(short、long、unsigned、doubleなど)
void hoge(int x) のほうが安全な気がするけど、別にどっちでも一緒ですか?
void hoge(const int &x) ってすると int以外の型を渡すと危険ですか?
(short、long、unsigned、doubleなど)
void hoge(int x) のほうが安全な気がするけど、別にどっちでも一緒ですか?
801デフォルトの名無しさん
2019/02/15(金) 00:21:58.58ID:LSuSmSCZ int以外の型を渡せばintに変換した一時変数が作られてその参照が渡されるからそこに危険性はない
802デフォルトの名無しさん
2019/02/15(金) 01:34:11.24ID:F2gH28Km803デフォルトの名無しさん
2019/02/15(金) 01:36:20.74ID:4dfOS9DP constの参照渡しってでかいコピーを作りたくないときだよね?
804デフォルトの名無しさん
2019/02/15(金) 01:38:17.51ID:RIb8T56M 組み込みの型で参照はいらない
805デフォルトの名無しさん
2019/02/15(金) 01:58:57.74ID:GRt3HKgN >>801-804
なるほど、安全性は一緒なんですね。
うちの会社にそういうコードを書くベテラン社員がいるので、
気になって質問させてもらいました。
やっぱり組み込み型は普通に値渡しでいいみたいですね。
なるほど、安全性は一緒なんですね。
うちの会社にそういうコードを書くベテラン社員がいるので、
気になって質問させてもらいました。
やっぱり組み込み型は普通に値渡しでいいみたいですね。
806デフォルトの名無しさん
2019/02/15(金) 06:42:38.91ID:Ayyf6Kdi c++だけで個人でソフトを完成させるのはめんどくさすぎるのですかね
807デフォルトの名無しさん
2019/02/15(金) 06:43:48.42ID:RIb8T56M 言語は関係ない
808デフォルトの名無しさん
2019/02/15(金) 07:12:10.42ID:c3qnZTh8809デフォルトの名無しさん
2019/02/15(金) 07:16:18.56ID:RIb8T56M それjavaでやってる奴見たことあるけど無駄すぎて周囲に陰で笑われてたぞ
810デフォルトの名無しさん
2019/02/15(金) 11:35:50.98ID:1MviBXkk >>808。
Cの時代から普通にあるよ。構造体で渡すまでもない場合はそれが最も効率がいい。
int add( int x, int y )
{
return x+ y;
}
float fadd( float x, float y )
{
return x+ y;
}
とか。
Cの時代から普通にあるよ。構造体で渡すまでもない場合はそれが最も効率がいい。
int add( int x, int y )
{
return x+ y;
}
float fadd( float x, float y )
{
return x+ y;
}
とか。
811デフォルトの名無しさん
2019/02/15(金) 12:00:51.60ID:F9XRfxx5 MyIntとかやっちゃうの?
812デフォルトの名無しさん
2019/02/15(金) 12:19:55.21ID:PR4djPv7 ↑とか言って人を見下す奴もゴミのようなtypedefの山には疑問を抱かないのがC++er
813デフォルトの名無しさん
2019/02/15(金) 12:29:01.92ID:QcXsKv+O logとって足し算or引き算に降格なんて良くする事でしょ
814デフォルトの名無しさん
2019/02/15(金) 12:31:45.75ID:1MviBXkk >>800
C++ で参照渡しする理由は:
1.構造体などをそのまま引数に渡すと、スタックにコピーする動作が入ってしまい、
構造体のサイズが大きいと時間がかかる。参照渡すにすると先頭アドレス
(4バイト、または、8バイト)だけがスタックにコピーされるので効率がいい。
int, float などは、中身のサイズとアドレスのサイズが変わらないので参照渡し
にしてもコピー動作に置いては効率が上がらない。そして、実際に引数を
読み取る段階では、参照渡しは1クロックほど時間が余計にかかってしまう。
2. 戻り値には1つの値/オブジェクト/変数しか返すことが出来ない。そのため、2つ以上の
値を返したい場合には、C では伝統的には、引数にポインタ渡しで変数の先頭アドレス
を渡し、そのアドレスを介して対応する変数に値を書き込む方法をとっていた。
C++ では、ポインタ * の変わりに参照 & を使うことが出来るようになった。
参照の方が見易かったり、分かりやすかったりする事があるといわれている。
3. const int &a や const float &a では、値を呼び出し側に返すことが出来ない。なぜなら、
const 属性が付いているから呼び出された関数側からは書き込めないため。
その上、アドレスのBIT数が、中身のBIT数と同じか、むしろ大きいので、実引数から
スタックにある仮引数へのコピー動作に置いても効率も上がらない。
さらに、参照なので、実際に読み取るときには1クロック余計な時間がかかってしまう。
だから、int a や float a で渡すほうが良い。
C++ で参照渡しする理由は:
1.構造体などをそのまま引数に渡すと、スタックにコピーする動作が入ってしまい、
構造体のサイズが大きいと時間がかかる。参照渡すにすると先頭アドレス
(4バイト、または、8バイト)だけがスタックにコピーされるので効率がいい。
int, float などは、中身のサイズとアドレスのサイズが変わらないので参照渡し
にしてもコピー動作に置いては効率が上がらない。そして、実際に引数を
読み取る段階では、参照渡しは1クロックほど時間が余計にかかってしまう。
2. 戻り値には1つの値/オブジェクト/変数しか返すことが出来ない。そのため、2つ以上の
値を返したい場合には、C では伝統的には、引数にポインタ渡しで変数の先頭アドレス
を渡し、そのアドレスを介して対応する変数に値を書き込む方法をとっていた。
C++ では、ポインタ * の変わりに参照 & を使うことが出来るようになった。
参照の方が見易かったり、分かりやすかったりする事があるといわれている。
3. const int &a や const float &a では、値を呼び出し側に返すことが出来ない。なぜなら、
const 属性が付いているから呼び出された関数側からは書き込めないため。
その上、アドレスのBIT数が、中身のBIT数と同じか、むしろ大きいので、実引数から
スタックにある仮引数へのコピー動作に置いても効率も上がらない。
さらに、参照なので、実際に読み取るときには1クロック余計な時間がかかってしまう。
だから、int a や float a で渡すほうが良い。
815デフォルトの名無しさん
2019/02/15(金) 12:49:09.91ID:1MviBXkk >>814
手短に説明するのは難しいが、float と double は、それぞれ32BIT、64BITで、
ポインタのBIT数と同じかどうかは、使ってるOSのBIT数によって違ってくる。
だから、double 型を参照渡しで渡した場合、わずかに効率が上がる場合が
絶対ないとは言い切れないかもしれない。ただし、その場合でも、参照型
の仮引数を実際に読み取るときには、「間接参照」というアセンブラで書くと、
[アドレス値] や、[ポインタ値] のようなオペランドを持った mov 命令が
1つ追加で必要になって、1クロック分余計にかかる。
なお、処理系によっては、関数呼び出しに置いては、float 型でも、double 型として
渡される場合があるかもしれない。
だから、関数呼び出しの時点でわずかに効率が上がっても、読み取る段階で
1クロック遅くなるかも知れない。だから、この位のBIT数の変数の場合で、
値を呼び出し側に戻り値として「出力(返す)」すつもりではい場合には、
参照渡しにせず、値渡しにしたほうが良いと考えられる。
手短に説明するのは難しいが、float と double は、それぞれ32BIT、64BITで、
ポインタのBIT数と同じかどうかは、使ってるOSのBIT数によって違ってくる。
だから、double 型を参照渡しで渡した場合、わずかに効率が上がる場合が
絶対ないとは言い切れないかもしれない。ただし、その場合でも、参照型
の仮引数を実際に読み取るときには、「間接参照」というアセンブラで書くと、
[アドレス値] や、[ポインタ値] のようなオペランドを持った mov 命令が
1つ追加で必要になって、1クロック分余計にかかる。
なお、処理系によっては、関数呼び出しに置いては、float 型でも、double 型として
渡される場合があるかもしれない。
だから、関数呼び出しの時点でわずかに効率が上がっても、読み取る段階で
1クロック遅くなるかも知れない。だから、この位のBIT数の変数の場合で、
値を呼び出し側に戻り値として「出力(返す)」すつもりではい場合には、
参照渡しにせず、値渡しにしたほうが良いと考えられる。
816デフォルトの名無しさん
2019/02/15(金) 13:09:37.97ID:PbZwx3xa void hoge(const int *x)と同じことだろ
817デフォルトの名無しさん
2019/02/15(金) 13:17:50.81ID:+vpba137 そんなところの速度気にする前に無駄なI/Oや描画処理がないかとかクソみたいなアルゴリズム使ってないかとかを心配しろ
818デフォルトの名無しさん
2019/02/15(金) 13:20:58.06ID:TwCl7FFb C++もC#みたいに参照渡しで呼び出す方にoutやref修飾子みたいなのを明示的に書けるようにしてほしいわ
結果を引数の参照に代入することの欠点は一見してそれが参照渡しか分からないことにある
別に強制じゃなくていいからさ
結果を引数の参照に代入することの欠点は一見してそれが参照渡しか分からないことにある
別に強制じゃなくていいからさ
819デフォルトの名無しさん
2019/02/15(金) 13:52:43.03ID:PR4djPv7 constなら区別する必要ないだろ
渡されたものを書き換えるなら生ポにすればよい
渡されたものを書き換えるなら生ポにすればよい
820デフォルトの名無しさん
2019/02/15(金) 14:12:58.62ID:TNDmXWGM >>798-799
これだな
「著作権侵害だから」という理由で「スクリーンショットを規制」するとマジで死ぬというのをかつて証明した実例がある
https://gunosy.com/articles/RImqe
これだな
「著作権侵害だから」という理由で「スクリーンショットを規制」するとマジで死ぬというのをかつて証明した実例がある
https://gunosy.com/articles/RImqe
821デフォルトの名無しさん
2019/02/15(金) 14:18:59.83ID:TNDmXWGM >>806
「だけ」で言うとフレームワークとかライブラリとかモジュールとか全部自作なら大変だな
「だけ」で言うとフレームワークとかライブラリとかモジュールとか全部自作なら大変だな
823デフォルトの名無しさん
2019/02/15(金) 14:20:59.00ID:TNDmXWGM >>810
テンプレ使え
テンプレ使え
824デフォルトの名無しさん
2019/02/15(金) 14:23:38.85ID:4dfOS9DP テンプレ嫌い
専門のライブラリ屋が書くのは良いけどてめーらは書くな
専門のライブラリ屋が書くのは良いけどてめーらは書くな
825デフォルトの名無しさん
2019/02/15(金) 16:09:39.03ID:RIb8T56M ライブラリ屋だが
826デフォルトの名無しさん
2019/02/15(金) 17:00:19.18ID:F2gH28Km >>816
ならvoid hoge(const int *const x)だな
ならvoid hoge(const int *const x)だな
827デフォルトの名無しさん
2019/02/15(金) 18:23:56.85ID:G4vKReT9828デフォルトの名無しさん
2019/02/15(金) 19:47:35.40ID:zLdO+ouL void hoge(const int &x)
初心者がたまにこうやって書いてるの見るわw
初心者がたまにこうやって書いてるの見るわw
829デフォルトの名無しさん
2019/02/15(金) 21:23:45.17ID:+vpba137 >>827
描画やI/Oで非効率なことしてたら、intの受け渡しのこまけえ話なんかと比べて
冗談抜きに10億倍とか時間かかったりするんだから先にそっち気にしろってだけだけど
この話を必要な機能を削れって解釈する奴もいるんだな
リアルで思い当たりあるわ、なるほど勉強になった
描画やI/Oで非効率なことしてたら、intの受け渡しのこまけえ話なんかと比べて
冗談抜きに10億倍とか時間かかったりするんだから先にそっち気にしろってだけだけど
この話を必要な機能を削れって解釈する奴もいるんだな
リアルで思い当たりあるわ、なるほど勉強になった
>>814
>参照の方が見易かったり、分かりやすかったりする事がある
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「彼が言うには、変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」
>参照の方が見易かったり、分かりやすかったりする事がある
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「彼が言うには、変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」
>>828
このスットコドッコイめ、「void hoge(const VeryBigClass &x)」は定石ぞよ
このスットコドッコイめ、「void hoge(const VeryBigClass &x)」は定石ぞよ
832デフォルトの名無しさん
2019/02/15(金) 21:41:03.28ID:WriY8atd833デフォルトの名無しさん
2019/02/15(金) 21:54:00.64ID:TsvBUbar834デフォルトの名無しさん
2019/02/15(金) 22:01:14.10ID:PR4djPv7835デフォルトの名無しさん
2019/02/15(金) 22:29:36.78ID:M7c4VM5H >>833
めっちゃclangが消し去りそうなコードw
めっちゃclangが消し去りそうなコードw
836デフォルトの名無しさん
2019/02/15(金) 22:45:50.97ID:ZriHGp8e ぬるぽをデリファレンスした時点で未定義動作だから受け取る側はそんなもん考慮しなくていいし渡した奴が悪い
参照がnullptrかどうかチェックするコードなんか書いたところでコンパイラが最適化で除去しちゃうぞ
参照がnullptrかどうかチェックするコードなんか書いたところでコンパイラが最適化で除去しちゃうぞ
837デフォルトの名無しさん
2019/02/15(金) 22:57:42.33ID:/qDgZA0Q 参照渡しにするとありがたいのは勝手にconst扱いになることだ
例: void foo(const char* p) { ... } // p自体はconstではない
void bar(const char& c) { ... } // 引数のどこにも非const要素が無い
ポインタで同じことをしようとするとfoo()は次のように書かねばならない
void foo(const char* const p) { ... }
例: void foo(const char* p) { ... } // p自体はconstではない
void bar(const char& c) { ... } // 引数のどこにも非const要素が無い
ポインタで同じことをしようとするとfoo()は次のように書かねばならない
void foo(const char* const p) { ... }
838デフォルトの名無しさん
2019/02/15(金) 23:01:30.49ID:zLdO+ouL839デフォルトの名無しさん
2019/02/15(金) 23:05:24.07ID:/qDgZA0Q 訂正orz、
△: 勝手にconst扱いになる
○: 勝手にアドレスがconst扱いになる
あと参照は同一の字面で変数の実体を差し換えられるというのが
ポインタより圧倒的に優れてゐる、すなわち
Foo::m_someDataをm_someDataとして直接参照する10億行のコードを書き直すことなく
FooWrapper::m_someDataに対する操作に差し換えることができる
ポインタではこれはできない(正確に言うと、プリプロセッサを悪用したらできる「こともある」が
△: 勝手にconst扱いになる
○: 勝手にアドレスがconst扱いになる
あと参照は同一の字面で変数の実体を差し換えられるというのが
ポインタより圧倒的に優れてゐる、すなわち
Foo::m_someDataをm_someDataとして直接参照する10億行のコードを書き直すことなく
FooWrapper::m_someDataに対する操作に差し換えることができる
ポインタではこれはできない(正確に言うと、プリプロセッサを悪用したらできる「こともある」が
840デフォルトの名無しさん
2019/02/15(金) 23:11:11.98ID:G4vKReT9 0で割ると例外が発生しますか?
841デフォルトの名無しさん
2019/02/15(金) 23:36:01.69ID:ZriHGp8e C++の例外なら発生しない
CPU例外なら発生する
CPU例外なら発生する
842デフォルトの名無しさん
2019/02/15(金) 23:40:28.46ID:M7c4VM5H 整数はCPUレベルの例外が起こる
浮動小数は±∞かNaNになる
浮動小数は±∞かNaNになる
843デフォルトの名無しさん
2019/02/16(土) 02:18:09.31ID:OHubCgoF じゃあnoexceptってことでいいですか?
844デフォルトの名無しさん
2019/02/16(土) 03:40:53.24ID:PL3DLWvZ WinならSEH例外をC++で捕捉できるんじゃないっけ
845デフォルトの名無しさん
2019/02/16(土) 05:52:35.21ID:/Su8h7T9 ゼロによる割り算って、未定義の動作になるんじゃないか?
CとC++で、あるいは規格のバージョン間で違うのかもしれんけど、
とりあえずCの整数ではゼロで割ると未定義動作って資料を見つけられた。
規格に手が届く人の検証を求めたいところ。
CとC++で、あるいは規格のバージョン間で違うのかもしれんけど、
とりあえずCの整数ではゼロで割ると未定義動作って資料を見つけられた。
規格に手が届く人の検証を求めたいところ。
846デフォルトの名無しさん
2019/02/16(土) 05:55:58.95ID:LvaIzR5y 言語としては未定義だけど一般的なコンピュータでは動作停止するかOSに落とされる
847デフォルトの名無しさん
2019/02/16(土) 08:45:05.13ID:q1DAaOKG 0割で動作停止するコンピューターなんて見たことないわ
848デフォルトの名無しさん
2019/02/16(土) 09:14:28.81ID:YRUE5/P+ >>842
実は、浮動小数の場合は、例外を発生させるか、値をNaNやINFにするかを
CPUの制御レジスタのフラグ類などであらかじめ設定できるようになっている。
だから、0で割り算した場合に例外ハンドラを起動させるようにすることも
可能。
実は、浮動小数の場合は、例外を発生させるか、値をNaNやINFにするかを
CPUの制御レジスタのフラグ類などであらかじめ設定できるようになっている。
だから、0で割り算した場合に例外ハンドラを起動させるようにすることも
可能。
849デフォルトの名無しさん
2019/02/16(土) 09:16:46.83ID:Njn41q/4 >>847
昔は有ったよ。
「0除算例外」という「割り込み」が生じるが、MS-DOS などの16BIT-OSでは
それをOSが処理しない場合があって、その場合は、アプリだけでなく、OS
まるごとハングアップしたり、再起動したりする事があった。
昔は有ったよ。
「0除算例外」という「割り込み」が生じるが、MS-DOS などの16BIT-OSでは
それをOSが処理しない場合があって、その場合は、アプリだけでなく、OS
まるごとハングアップしたり、再起動したりする事があった。
850デフォルトの名無しさん
2019/02/16(土) 09:43:23.27ID:CCOmn+yc ドヤッ
851デフォルトの名無しさん
2019/02/16(土) 10:17:27.91ID:q1DAaOKG852デフォルトの名無しさん
2019/02/16(土) 15:24:09.94ID:LvaIzR5y OSが安全に処理してくれてるだけでOSが無ければ止まるよ
853デフォルトの名無しさん
2019/02/16(土) 17:49:12.32ID:q1DAaOKG854デフォルトの名無しさん
2019/02/16(土) 18:06:39.50ID:mSqP7pCT アイドリングで止まってるか暴走で同じところを回ってるのとの違いでしかない
(発熱以外違いはない?)
(発熱以外違いはない?)
>>853
あなたのいう「暴走」の定義はなんですか?
ゼロ割のinterruptが発生したら然るべきルーチンを呼び出すだけなのでは?
それが何をするかは定義しだいだが、暴走!?みたいなことが発生することはないのでは?
あなたのいう「暴走」の定義はなんですか?
ゼロ割のinterruptが発生したら然るべきルーチンを呼び出すだけなのでは?
それが何をするかは定義しだいだが、暴走!?みたいなことが発生することはないのでは?
856デフォルトの名無しさん
2019/02/16(土) 18:26:44.19ID:STqQL4YT 突然始まるガベコレで長期間CPU占有されて
表面上使ってるひとには止まってると思われる状況は発生するし
一般人はそれを文字通り止まってるとみなすだろう
表面上使ってるひとには止まってると思われる状況は発生するし
一般人はそれを文字通り止まってるとみなすだろう
>>856
最近のソフトで Full GC が走ってしまうことなんてあるのかな…
最近のソフトで Full GC が走ってしまうことなんてあるのかな…
858デフォルトの名無しさん
2019/02/16(土) 18:43:27.21ID:e4F3ujKc 今ハード割り込みなんて気にするソフト書くとしたらOSがないやつだよね
859デフォルトの名無しさん
2019/02/16(土) 18:46:53.94ID:LE6s3aZE プロセスとして切り離しとけってアドバイスでこんなの終わりだろ。
860デフォルトの名無しさん
2019/02/16(土) 18:56:31.75ID:q1DAaOKG861デフォルトの名無しさん
2019/02/16(土) 18:57:29.43ID:q1DAaOKG >>856
こんなスレで一般人の感想を言われても…
こんなスレで一般人の感想を言われても…
862デフォルトの名無しさん
2019/02/16(土) 19:57:22.22ID:OHubCgoF 一般人とか言い出すのはLinux板だけかと思ってた、ワロ。
863デフォルトの名無しさん
2019/02/17(日) 02:38:22.89ID:WKDw+26J ていうか今目の前にある環境でコード書いて試せばすぐわかることを聞いてくるやつは
エアC++
エアC++
864デフォルトの名無しさん
2019/02/17(日) 04:21:07.23ID:N1izVyMt Visual Studioでコード書いても何もわからない。
とても都合よくできてるから。
こっちが標準になればいいのに。
とても都合よくできてるから。
こっちが標準になればいいのに。
865デフォルトの名無しさん
2019/02/17(日) 04:25:41.02ID:p4FwcX/Y ラムダ式がいまだに書けないし読めないんだけど
書きたくなるようなメリット教えてくれ
書きたくなるようなメリット教えてくれ
866デフォルトの名無しさん
2019/02/17(日) 04:28:58.95ID:N1izVyMt 読みやすいし楽だからでは。
867デフォルトの名無しさん
2019/02/17(日) 04:46:40.12ID:4OnEl3He C++を使うとコンパイラエラーで悩むことが多いがラムダは複雑そうなのに非常に素直だ。ラムダで問題がでることが一度もない。素直でできがいいと思うが残念なことに
そんなに使い道がない。
そんなに使い道がない。
868さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/17(日) 04:51:22.12ID:fsVSWZKv 関数の内部で関数を定義できる。すなわち、例えばデカい関数からいちいちその関数の外側に注意を向ける必要が無くなる。
869デフォルトの名無しさん
2019/02/17(日) 05:00:32.63ID:N1izVyMt 述語に使えば。
870デフォルトの名無しさん
2019/02/17(日) 05:04:23.32ID:CcQWXdbL STLでもboostでもQtでも使いまくるだろ
871さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/17(日) 05:05:22.93ID:fsVSWZKv std::sortの述語に使うのはよくあるね。
872デフォルトの名無しさん
2019/02/17(日) 05:32:44.80ID:4OnEl3He873デフォルトの名無しさん
2019/02/17(日) 05:36:53.53ID:bztXspcu std::thread t([&]() {
....
});
とか。
....
});
とか。
874デフォルトの名無しさん
2019/02/17(日) 06:17:10.31ID:4OnEl3He875さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/17(日) 06:33:40.59ID:fsVSWZKv std::threadはスレッド。すなわち並列処理ができる。以前は別の場所に並列処理を行う関数を書かないと
いけなかったのが、ラムダを使えば処理をその場で書くことができる。
いけなかったのが、ラムダを使えば処理をその場で書くことができる。
876デフォルトの名無しさん
2019/02/17(日) 06:53:15.35ID:naWxhgEk >>865
いちいち関数名考えなくて済むでしょ
いちいち関数名考えなくて済むでしょ
877デフォルトの名無しさん
2019/02/17(日) 07:51:55.06ID:O/E0SKNM そんなしょうもない理由、どうでもいいわ。
てか可読性上げるために少しは考えろや。
他の言語なんかだったら部分的に引数を適用した関数(カリー化)が使いやすくなるとかはある。
てか可読性上げるために少しは考えろや。
他の言語なんかだったら部分的に引数を適用した関数(カリー化)が使いやすくなるとかはある。
878デフォルトの名無しさん
2019/02/17(日) 09:00:43.73ID:naWxhgEk 名前付をしょうもない理由とか言う奴はもれなく使えない
そもそもその場で書いてるから可読性も上がるし
ラムダ使えない奴の戯言でしかないな
そもそもその場で書いてるから可読性も上がるし
ラムダ使えない奴の戯言でしかないな
879デフォルトの名無しさん
2019/02/17(日) 09:47:35.17ID:EB+Wm9hA 処理の一部を関数として受け取れるように関数書いといて
呼び側はラムダを好きに作ってそこに突っ込む
DRYするときとかに割とよくやるでしょ
呼び側はラムダを好きに作ってそこに突っ込む
DRYするときとかに割とよくやるでしょ
880デフォルトの名無しさん
2019/02/17(日) 11:01:41.76ID:4OnEl3He >>875
なるほど。それはC#なんかではよく思った。以前はdelegate関数を定義するのがめんどくさくてかなわなかった。
しかしC++はマイコンでしか使わないし、まだ恐る恐る使ってるレベルなのでthreadとかは使ったことがない。
以前はPC側はC#、マイコンはCと使い分けて書いていて今回初めてマイコンにC++を使ってるが便利
だとは思うが、困ることも多い。
二人で開発をしているが、相方が意味のない機能をやたらつかいたがる。string やvectorをドンドン
使うのでプログラムが無意味にバカでかくなってしまう。自分は基本的にCレベルの機能しか使わない。
でもクラスやNamesapce が整理する上では便利だし、constexperも好き。
ラムダはデバッグターミナルを切り替えるのに使ってるが他にはつかうところが思いつかなかった。
なるほど。それはC#なんかではよく思った。以前はdelegate関数を定義するのがめんどくさくてかなわなかった。
しかしC++はマイコンでしか使わないし、まだ恐る恐る使ってるレベルなのでthreadとかは使ったことがない。
以前はPC側はC#、マイコンはCと使い分けて書いていて今回初めてマイコンにC++を使ってるが便利
だとは思うが、困ることも多い。
二人で開発をしているが、相方が意味のない機能をやたらつかいたがる。string やvectorをドンドン
使うのでプログラムが無意味にバカでかくなってしまう。自分は基本的にCレベルの機能しか使わない。
でもクラスやNamesapce が整理する上では便利だし、constexperも好き。
ラムダはデバッグターミナルを切り替えるのに使ってるが他にはつかうところが思いつかなかった。
881デフォルトの名無しさん
2019/02/17(日) 11:05:05.20ID:ihUXQF5N ラムダ式は名称が良くない
882デフォルトの名無しさん
2019/02/17(日) 11:10:40.23ID:vi4O111w >>880
君にはCがお似合いじゃないかな
コンパイルや実行時のある程度のオーバーヘッドを許容してでもOOPを導入して
楽に安全に大規模で複雑なプログラムを開発しようってコンセプトに馴染めないんだろう?
stringやvectorを使うとはそういうことだからこれを無意味と考えてる時点で向いてない
君にはCがお似合いじゃないかな
コンパイルや実行時のある程度のオーバーヘッドを許容してでもOOPを導入して
楽に安全に大規模で複雑なプログラムを開発しようってコンセプトに馴染めないんだろう?
stringやvectorを使うとはそういうことだからこれを無意味と考えてる時点で向いてない
883デフォルトの名無しさん
2019/02/17(日) 11:14:31.53ID:taqGnUFh マイコンならCで関数ポインタ使うような所で一部代わりに使う感じじゃないの
ポインタを動的に取り替えたりしないなら間接参照がなくなって速くなる
ポインタを動的に取り替えたりしないなら間接参照がなくなって速くなる
884デフォルトの名無しさん
2019/02/17(日) 11:28:22.52ID:WAEZojeG 頭が悪くてその機能を理解出来ず使いこなせないだけなのに
「書きたくなるようなメリット教えろ」と言い換えてるだけだ
「わたしの頭が悪い」ではなく「わたしにその機能にメリットが無いように見せているのが悪い(そちらから自発的にアピールしないのが悪い)」としてる
バカじゃないのかこいつ
「書きたくなるようなメリット教えろ」と言い換えてるだけだ
「わたしの頭が悪い」ではなく「わたしにその機能にメリットが無いように見せているのが悪い(そちらから自発的にアピールしないのが悪い)」としてる
バカじゃないのかこいつ
885デフォルトの名無しさん
2019/02/17(日) 11:32:45.27ID:pY7p2BwH C++で安全になってるプロジェクトを見たことがありません。
886デフォルトの名無しさん
2019/02/17(日) 11:55:17.00ID:Y22Zw0Bq >>884
上の発言はおいらが書いたわけじゃないけど、どんどん色々と新しくなってるから
おいらも含めて昔からC++を使ってた人にとっては、vector、string、
smart pointerなどは知らないことなんだよ。文字列はMFCのCString使ってたし、
vectorの代わりに、自作のクラス・テンプレートを使ってた。
上の発言はおいらが書いたわけじゃないけど、どんどん色々と新しくなってるから
おいらも含めて昔からC++を使ってた人にとっては、vector、string、
smart pointerなどは知らないことなんだよ。文字列はMFCのCString使ってたし、
vectorの代わりに、自作のクラス・テンプレートを使ってた。
887デフォルトの名無しさん
2019/02/17(日) 12:13:43.95ID:vi4O111w >>885
それはC++のコンセプトを理解せずにまるでCみたいな手法を混ぜ込んでくる人が一定数居ることが最大の原因だろうね
Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
C++を使っても低スキルのゲロゲロなCプログラマは排除できない
これはC++の弱点と言っていいだろう
それはC++のコンセプトを理解せずにまるでCみたいな手法を混ぜ込んでくる人が一定数居ることが最大の原因だろうね
Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
C++を使っても低スキルのゲロゲロなCプログラマは排除できない
これはC++の弱点と言っていいだろう
888デフォルトの名無しさん
2019/02/17(日) 12:19:18.91ID:EB+Wm9hA vector stringがない昔ってC++98より前のお話か・・・?
889デフォルトの名無しさん
2019/02/17(日) 13:07:09.82ID:Y22Zw0Bq >>888
1998当時、本を買ってC++を学ぶと、C++98 の事は書いてなかったんだよ。
C++98 が本に書かれるようになったのは、何年か後。
使えても、実際に使われるようになったのは、感覚的には、
この5〜10年ほどなんじゃないかと思う。
1998当時、本を買ってC++を学ぶと、C++98 の事は書いてなかったんだよ。
C++98 が本に書かれるようになったのは、何年か後。
使えても、実際に使われるようになったのは、感覚的には、
この5〜10年ほどなんじゃないかと思う。
890デフォルトの名無しさん
2019/02/17(日) 13:26:22.07ID:taqGnUFh VCが糞すぎた時代が長かったからねえ
だいたいあいつのせい
だいたいあいつのせい
891デフォルトの名無しさん
2019/02/17(日) 13:31:49.98ID:B6Z0xbW8892デフォルトの名無しさん
2019/02/17(日) 13:47:28.47ID:GrqAm9XM >>887
リーナス乙
リーナス乙
893デフォルトの名無しさん
2019/02/17(日) 13:50:11.60ID:7mUUrd8D >>857
GCは知らんけどSSDとかのレロケーションで固まったように見えるケースはあるね
GCは知らんけどSSDとかのレロケーションで固まったように見えるケースはあるね
894デフォルトの名無しさん
2019/02/17(日) 14:51:27.44ID:CcQWXdbL895デフォルトの名無しさん
2019/02/17(日) 16:14:40.21ID:Y22Zw0Bq このスレを見ようとすると、
503 Service Temporarily Unavailable
が出る人いる? 書くことは出来るはずだから、書いてみて。
503 Service Temporarily Unavailable
が出る人いる? 書くことは出来るはずだから、書いてみて。
896デフォルトの名無しさん
2019/02/17(日) 18:54:54.93ID:MvGK95PG897デフォルトの名無しさん
2019/02/17(日) 19:05:30.20ID:+0nZrljm898デフォルトの名無しさん
2019/02/17(日) 19:07:19.51ID:CcQWXdbL fでも良いレベルならfにするしもうちょっと詳しい方がいいときは動詞にする
899デフォルトの名無しさん
2019/02/17(日) 19:18:21.48ID:MvGK95PG >>897
命名面倒だからラムダ式で程度のもならprivateなんだし適当でいいのは同じだろ
命名面倒だからラムダ式で程度のもならprivateなんだし適当でいいのは同じだろ
900デフォルトの名無しさん
2019/02/17(日) 20:01:49.45ID:taqGnUFh メンバ関数だとクラス内全体に名前見えちゃうだろ
スコープ狭いから適当でいいって言ってるのに
スコープ狭いから適当でいいって言ってるのに
901デフォルトの名無しさん
2019/02/17(日) 20:22:43.95ID:naWxhgEk902デフォルトの名無しさん
2019/02/17(日) 22:32:40.23ID:O/E0SKNM >>894
c++慣れしてる人ほどスコープの抜け方になんとなく不安を覚える書き方だからだろ。
c++慣れしてる人ほどスコープの抜け方になんとなく不安を覚える書き方だからだろ。
>>887
>Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
>C++を使っても低スキルのゲロゲロなCプログラマは排除できない
無論、低スキルのゲロゲロベロベロなC++を排除できるほうが優れた手法といえるだろう
上記のどちらかを選べ、というのなら、私はそうする
>Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
>C++を使っても低スキルのゲロゲロなCプログラマは排除できない
無論、低スキルのゲロゲロベロベロなC++を排除できるほうが優れた手法といえるだろう
上記のどちらかを選べ、というのなら、私はそうする
904はちみつ餃子 ◆8X2XSCHEME
2019/02/17(日) 23:36:21.11ID:7lxezDVs >>886 >>889
俺も 1998 年頃に ARM を読んで C++ を学んだが、そんな恥ずかしいことよう言わんわ。
当時の、それも日本語に限ってもネット上には情報があふれてたし、
2000 年頃になるとCマガ (επιστ?μη の連載) でも string や vector は取り上げてるし、
避けて通る方が難しいくらいの状況だったので、要するにお前が「あえて避けてた (逃げてた)」だけ。
そりゃあ当時の Windows での事情を考えれば MFC が妥当な選択だし、
MFC を使うとなれば文字列は CString を選ばざるを得ないというのはわかるよ。
よほどリソースが限られている組込み系とかなら vector でさえキツいって
状況だってあるかもしれんというのはわかるよ。
それに慣れてたら標準のライブラリの方がなじみが無いかもしれん。
でも、そういったライブラリのクソさに打ちのめされてきた経験があればなおさらのこと、
よりよい標準には飛びつかざるを得ないだろ。
よりよいということが理解できないほどクソの臭さに慣れてしまったなら、
そりゃやっぱりお前がクソなだけだわ。
俺も 1998 年頃に ARM を読んで C++ を学んだが、そんな恥ずかしいことよう言わんわ。
当時の、それも日本語に限ってもネット上には情報があふれてたし、
2000 年頃になるとCマガ (επιστ?μη の連載) でも string や vector は取り上げてるし、
避けて通る方が難しいくらいの状況だったので、要するにお前が「あえて避けてた (逃げてた)」だけ。
そりゃあ当時の Windows での事情を考えれば MFC が妥当な選択だし、
MFC を使うとなれば文字列は CString を選ばざるを得ないというのはわかるよ。
よほどリソースが限られている組込み系とかなら vector でさえキツいって
状況だってあるかもしれんというのはわかるよ。
それに慣れてたら標準のライブラリの方がなじみが無いかもしれん。
でも、そういったライブラリのクソさに打ちのめされてきた経験があればなおさらのこと、
よりよい標準には飛びつかざるを得ないだろ。
よりよいということが理解できないほどクソの臭さに慣れてしまったなら、
そりゃやっぱりお前がクソなだけだわ。
905デフォルトの名無しさん
2019/02/17(日) 23:49:56.95ID:WLFlc2AV 久々のダークサイド餃子
906デフォルトの名無しさん
2019/02/18(月) 00:39:07.20ID:90CTQpRS907はちみつ餃子 ◆8X2XSCHEME
2019/02/18(月) 01:21:22.59ID:ViRlfcsh908デフォルトの名無しさん
2019/02/18(月) 01:21:47.26ID:yYX5e63o 福田の本ほどわかりにくいものはない。
非お勧め。
非お勧め。
909デフォルトの名無しさん
2019/02/18(月) 03:09:31.91ID:90CTQpRS910デフォルトの名無しさん
2019/02/18(月) 03:12:36.05ID:90CTQpRS あと1998年でネット使える環境の人間そんなにいねーよ
てかその当時からプログラミングやってるにしては・・・w
てかその当時からプログラミングやってるにしては・・・w
911はちみつ餃子 ◆8X2XSCHEME
2019/02/18(月) 03:24:59.60ID:ViRlfcsh912デフォルトの名無しさん
2019/02/18(月) 03:42:21.75ID:90CTQpRS913はちみつ餃子 ◆8X2XSCHEME
2019/02/18(月) 04:40:23.60ID:ViRlfcsh914デフォルトの名無しさん
2019/02/18(月) 05:05:11.21ID:zr0LtZh3915デフォルトの名無しさん
2019/02/18(月) 05:13:59.72ID:90CTQpRS916デフォルトの名無しさん
2019/02/18(月) 06:15:11.87ID:zr0LtZh3 マジで当たり散らしててワロタ
917デフォルトの名無しさん
2019/02/18(月) 06:31:20.82ID:90CTQpRS アホだろお前
918デフォルトの名無しさん
2019/02/18(月) 08:53:15.92ID:LEH693AC Visual C++ 2010 Express に相当する、無料版の最新版はどれでしょうか?
919デフォルトの名無しさん
2019/02/18(月) 08:55:21.66ID:m+MvlS9t 2018 Community
2019のプレビューも出てるけど
2019のプレビューも出てるけど
920デフォルトの名無しさん
2019/02/18(月) 09:11:24.69ID:LEH693AC ありがとう >>919
921デフォルトの名無しさん
2019/02/19(火) 01:06:26.45ID:V8qmPrEh ラムダ式で定義する関数の名前を動詞にしようとする香具師はどうしようもない…
922デフォルトの名無しさん
2019/02/19(火) 01:36:14.38ID:HoDktNU7 auto型引数が使えるの知ってラムダ式が便利だと初めて感じた
テンプレートと違ってスコープ内でしか使わないから想定外の型が放り込まれることもないから適当に作れる
テンプレートと違ってスコープ内でしか使わないから想定外の型が放り込まれることもないから適当に作れる
923デフォルトの名無しさん
2019/02/19(火) 07:50:59.68ID:1erPK1jn JavaからC++のプログラムを呼んでるのですが、こういう場合にC++のプログラムをgdbでデバッグしたいときってどうしたら良いですか
924デフォルトの名無しさん
2019/02/19(火) 08:09:41.11ID:fDbgv8CD アタッチできないのかねえ
925デフォルトの名無しさん
2019/02/19(火) 08:23:25.75ID:1erPK1jn できないです
926デフォルトの名無しさん
2019/02/19(火) 09:41:57.99ID:fDbgv8CD JNIでデバック、みたいな文章いっぱい引っかかるけどなにが違うんだろうね
927デフォルトの名無しさん
2019/02/19(火) 09:54:37.53ID:b+RKSXhJ ランタイムである点です
928デフォルトの名無しさん
2019/02/19(火) 12:56:43.76ID:Dp5mXjEy >>922
便利だけど用途は限定的ってことですね
便利だけど用途は限定的ってことですね
929デフォルトの名無しさん
2019/02/19(火) 13:49:45.72ID:h1wI7nx1 アタッチできない理由を書けよ
930デフォルトの名無しさん
2019/02/19(火) 14:03:05.95ID:JAI+ozPz そう言えばなんかソシャゲでバグの説明にソースコード出した奴無かったっけ
確かラムダ式使われてたような記憶があるんだけど何だったっけ?
確かラムダ式使われてたような記憶があるんだけど何だったっけ?
931デフォルトの名無しさん
2019/02/19(火) 14:08:36.63ID:JAI+ozPz ごめん
ググったら出た
ググったら出た
932デフォルトの名無しさん
2019/02/19(火) 14:19:25.93ID:/4RDdr4I ドッカンバトルかな
933デフォルトの名無しさん
2019/02/19(火) 15:36:52.16ID:WpsDjOEI934デフォルトの名無しさん
2019/02/19(火) 16:55:21.34ID:h1wI7nx1 GUIのことをインターフェースって呼ぶ風潮
935デフォルトの名無しさん
2019/02/19(火) 17:05:34.91ID:cyInrh9G (GU)I
936デフォルトの名無しさん
2019/02/19(火) 21:34:44.26ID:DbU8mxgP (CU)I
937デフォルトの名無しさん
2019/02/19(火) 22:02:44.91ID:0/4iEJd+ mfcとかいうからjavaのinterfaceと思いきやcomみたいなものを指してるんじゃないかと勘ぐっちゃったよ
938デフォルトの名無しさん
2019/02/20(水) 05:22:26.29ID:wMUHduDL 言語単体では図形描写というのはできないのですか?
また、図形描写する機能は一般的になんと呼ぶのですか?
javascriptだとhtmlやcssを使うと思います。
また、図形描写する機能は一般的になんと呼ぶのですか?
javascriptだとhtmlやcssを使うと思います。
939デフォルトの名無しさん
2019/02/20(水) 06:08:35.28ID:uLJjwTiH 私のプログラムはポーカーフェイス搭載
何考えてんだかさっぱりわからん
何考えてんだかさっぱりわからん
940デフォルトの名無しさん
2019/02/20(水) 06:13:56.92ID:V5JGZApS >>938
画像を扱う機能をもった外部関数(ライブラリ)を呼ぶことで画像を表示する。
その意味では「C++では言語単体では図形描写できない」という認識で正しい。
…よね? 標準ライブラリにグラフィック含まれてないよね。
「図形描写する機能」ってのは一般的には何て呼ぶんだろ。
昔は「グラフィックライブラリ」とか言ったけど、
現在は「ウィンドウライブラリ」とでも言うのか?
Windows なら「Windows API のグラフィック関連部分」とか、
X Window System なら「X の API」とか、具体的に名指しするかな。
もっと上位のクラスライブラリでも同様かと。
画像を扱う機能をもった外部関数(ライブラリ)を呼ぶことで画像を表示する。
その意味では「C++では言語単体では図形描写できない」という認識で正しい。
…よね? 標準ライブラリにグラフィック含まれてないよね。
「図形描写する機能」ってのは一般的には何て呼ぶんだろ。
昔は「グラフィックライブラリ」とか言ったけど、
現在は「ウィンドウライブラリ」とでも言うのか?
Windows なら「Windows API のグラフィック関連部分」とか、
X Window System なら「X の API」とか、具体的に名指しするかな。
もっと上位のクラスライブラリでも同様かと。
941デフォルトの名無しさん
2019/02/20(水) 06:44:28.39ID:wMUHduDL >>940
グラフィックライブラリで調べてみます!
グラフィックライブラリで調べてみます!
942デフォルトの名無しさん
2019/02/20(水) 06:45:11.12ID:kMkx71jX >>938
svgを出力しなされ
svgを出力しなされ
943デフォルトの名無しさん
2019/02/20(水) 06:48:28.01ID:uLJjwTiH 図形描画は基本的にはメモリ配列に描画することだからな
2次元配列にドット打ったり直線引いたりとかcでも標準化されててもいいような気がする
2次元配列にドット打ったり直線引いたりとかcでも標準化されててもいいような気がする
944デフォルトの名無しさん
2019/02/20(水) 06:52:12.33ID:6H7Ao8nE 標準に組み込まれてる言語がどれだけあるのだろうか
945デフォルトの名無しさん
2019/02/20(水) 07:10:25.48ID:oqw8gF3u >>944
言語自体に組み込まれてるのはNBasicとかぐらいしか知らんわ
言語自体に組み込まれてるのはNBasicとかぐらいしか知らんわ
946デフォルトの名無しさん
2019/02/20(水) 07:15:02.69ID:6H7Ao8nE WinFormsはC#の標準ライブラリだろうか
947デフォルトの名無しさん
2019/02/20(水) 07:36:29.38ID:lAUU9gyq cairoをC++標準に組み込むとかいう話はどうなったんだろう
948デフォルトの名無しさん
2019/02/20(水) 07:44:49.23ID:V5JGZApS LOGOのグラフィック機能(タートル)は標準じゃないかな。
使ったことないから実際のところは知らんのだが。
ROM-BASICの頃は、たいがい何らかのグラフィックを使えたけど、
方言ばっかりで標準とは言い難かったね。
使ったことないから実際のところは知らんのだが。
ROM-BASICの頃は、たいがい何らかのグラフィックを使えたけど、
方言ばっかりで標準とは言い難かったね。
949デフォルトの名無しさん
2019/02/20(水) 07:49:44.24ID:9tgV50SM >>947
待てど海路の日和無し
待てど海路の日和無し
950デフォルトの名無しさん
2019/02/20(水) 10:49:58.31ID:wMUHduDL wolf editorみたいなのはC++なんでしょうかね
951デフォルトの名無しさん
2019/02/20(水) 19:42:52.26ID:Y2O+s3lJ iteratorのメンバへのアクセスは、なぜドットではなくアローなのですか?
952デフォルトの名無しさん
2019/02/20(水) 19:43:28.58ID:6H7Ao8nE ポインタとの互換性を持たせるため
953デフォルトの名無しさん
2019/02/20(水) 19:54:35.48ID:V5JGZApS イテレータを ++ で進めたり、比較演算子で終わりの判断をするため、かな。
つまり「ポインタとの互換性」か。
シンタクスとかセマンティクスとか、専門用語が出る部分だね。
あと、ドット演算子はオーバーロードできないでしょ。
つまり「ポインタとの互換性」か。
シンタクスとかセマンティクスとか、専門用語が出る部分だね。
あと、ドット演算子はオーバーロードできないでしょ。
954デフォルトの名無しさん
2019/02/20(水) 19:59:56.78ID:vIxNp1pR std::next()って出来たけど、これは配列のアドレスと互換性を持たせるためかな。
std::advance()のように参照を渡すのがダメだとすると、戻り値で何かを返す場合、イテレータを返せなくなるので、どういう設計にしたらいいのだろ。
std::advance()のように参照を渡すのがダメだとすると、戻り値で何かを返す場合、イテレータを返せなくなるので、どういう設計にしたらいいのだろ。
955デフォルトの名無しさん
2019/02/20(水) 20:19:38.87ID:sr7oPl81 >>943
TclTkのcanvasが便利
TclTkのcanvasが便利
956デフォルトの名無しさん
2019/02/20(水) 22:16:30.19ID:QUf2KVgt #include <chrono>
namespace user {
using std::chrono::operator""ms;
};
上の場合msというユーザー定義リテラルをuser名前空間内に定義した扱いになる?
namespace user {
using std::chrono::operator""ms;
};
上の場合msというユーザー定義リテラルをuser名前空間内に定義した扱いになる?
957デフォルトの名無しさん
2019/02/20(水) 22:23:30.88ID:MRDgobfX tclとか嫌だよ
958デフォルトの名無しさん
2019/02/20(水) 22:52:29.12ID:ZG48jy4+ multimapである値に対応する全てのキーを列挙するのってどうやるの?
959デフォルトの名無しさん
2019/02/20(水) 23:07:04.44ID:QUf2KVgt std::multimap<int, double> m;
m.insert({ 1, 2.0 });
m.insert({ 2, 2.0 });
m.insert({ 3, 2.0 });
m.insert({ 4, 2.0 });
m.insert({ 5, 2.0 });
//C++17
for (auto [key, value] : m){
std::cout << key << ": " << value << std::endl;
}
//C++11
for (auto&& p: m){
std::cout << p.first << ": " << p.second << std::endl;
}
上のコードで全要素参照できるから、valueかp.secondの値を比較すれば?
m.insert({ 1, 2.0 });
m.insert({ 2, 2.0 });
m.insert({ 3, 2.0 });
m.insert({ 4, 2.0 });
m.insert({ 5, 2.0 });
//C++17
for (auto [key, value] : m){
std::cout << key << ": " << value << std::endl;
}
//C++11
for (auto&& p: m){
std::cout << p.first << ": " << p.second << std::endl;
}
上のコードで全要素参照できるから、valueかp.secondの値を比較すれば?
960デフォルトの名無しさん
2019/02/20(水) 23:12:45.46ID:ZG48jy4+961デフォルトの名無しさん
2019/02/20(水) 23:25:09.65ID:QUf2KVgt キーと値の設定間違えてない?
962デフォルトの名無しさん
2019/02/21(木) 08:23:36.74ID:9OrJvQb/ >>884
楽なC#を使わないでC++を使い続けるのは馬鹿にみえる。それと同じだろうな。
Cを使わないでASMを使い続けるのも同じ。
C++を使わないでCを使うのも同じ。
まあでもそれなりにターゲットによってはそれを使わざるを得ない場合がある。
マイコンの場合はASMが基本だがCでも書けるようになってきた。殆ど
の場合はCでも書ける。しかし条件付きではあるがC++でも書けるようになってきた。
ただスピードも遅いメモリも少ないマイコンでは便利だからといってもvectorやstringは
あまり使わない方がいい。使う場合でも節度をわきまえて使わないとね。
馬鹿なんて言葉も使うには節度がいる。でないと単なる馬鹿にしか見えない。
楽なC#を使わないでC++を使い続けるのは馬鹿にみえる。それと同じだろうな。
Cを使わないでASMを使い続けるのも同じ。
C++を使わないでCを使うのも同じ。
まあでもそれなりにターゲットによってはそれを使わざるを得ない場合がある。
マイコンの場合はASMが基本だがCでも書けるようになってきた。殆ど
の場合はCでも書ける。しかし条件付きではあるがC++でも書けるようになってきた。
ただスピードも遅いメモリも少ないマイコンでは便利だからといってもvectorやstringは
あまり使わない方がいい。使う場合でも節度をわきまえて使わないとね。
馬鹿なんて言葉も使うには節度がいる。でないと単なる馬鹿にしか見えない。
963デフォルトの名無しさん
2019/02/21(木) 09:34:18.02ID:ckwx5Bag マイコンをどう使うのかわからんが
定期的にリセットできるならともかく、
C++のようにオブジェクトの生成消滅繰り返すなんて言語道断だからな。
定期的にリセットできるならともかく、
C++のようにオブジェクトの生成消滅繰り返すなんて言語道断だからな。
964デフォルトの名無しさん
2019/02/21(木) 09:36:40.40ID:zicwhEg7 ものによる
965デフォルトの名無しさん
2019/02/21(木) 10:55:49.95ID:AiQPvA+F マウンティング用パワーワードが「ものによる」
コレ言う奴は大抵ばか
コレ言う奴は大抵ばか
966デフォルトの名無しさん
2019/02/21(木) 10:56:14.09ID:zicwhEg7 そうですか
967デフォルトの名無しさん
2019/02/21(木) 12:41:59.00ID:Jz+qZwo4 C++がCの唯一の子孫というわけでもないし
968デフォルトの名無しさん
2019/02/21(木) 13:09:43.80ID:WaMgOh2Z C#はCとは全く異なる言語だと思うな。似ても似つかない。
969デフォルトの名無しさん
2019/02/21(木) 18:27:00.81ID:giZIG96n >>968
快適なC++、それがJava。
快適なC++、それがJava。
970デフォルトの名無しさん
2019/02/21(木) 18:32:29.46ID:2gpubT7a 単価半額以下の屑言語。
悔しかったらデバドラ書いて売ってこい
悔しかったらデバドラ書いて売ってこい
971デフォルトの名無しさん
2019/02/21(木) 18:52:26.41ID:ZuxKbWfp >>969
C#ならまだしも今更Javaはないわ
C#ならまだしも今更Javaはないわ
972デフォルトの名無しさん
2019/02/21(木) 19:25:32.37ID:WaMgOh2Z C#に一番近い言語は、VBかも知れない。
VBは馬鹿にされるので、名前がCに近くなって喜んでいる人がいる気はするが。
VBは馬鹿にされるので、名前がCに近くなって喜んでいる人がいる気はするが。
973デフォルトの名無しさん
2019/02/21(木) 21:34:32.15ID:zicwhEg7 Cの影響を受けているという意味では現役の言語のほとんどが影響を受けているのでみんなCの子孫
974デフォルトの名無しさん
2019/02/21(木) 21:49:22.41ID:w/7GK1kk PostScript 「せやな」
APL「せやせや」
APL「せやせや」
975デフォルトの名無しさん
2019/02/21(木) 22:03:54.15ID:55eQHh2l 全部FORTRANの子孫で結論
976デフォルトの名無しさん
2019/02/21(木) 23:43:22.72ID:ckwx5Bag >>962
ちょっと違うんだよな
vectorやstringは普通にC++でプログラムできる環境なら使って問題ないだろ。。
でも、アルゴリズムを明示したいとかあるのよ。
DSPでアセンブラでコーディングさせる外注さんに手渡す仕様書としてCでコーディングして渡すとかね。
レジスタ を short r0,r1,r2;とかおいて、そのDSPの構造真似たりして。
C++のライブラリなんか使ってしまうと肝心なアルゴリズムが見えなくなってしまう。
ちょっと違うんだよな
vectorやstringは普通にC++でプログラムできる環境なら使って問題ないだろ。。
でも、アルゴリズムを明示したいとかあるのよ。
DSPでアセンブラでコーディングさせる外注さんに手渡す仕様書としてCでコーディングして渡すとかね。
レジスタ を short r0,r1,r2;とかおいて、そのDSPの構造真似たりして。
C++のライブラリなんか使ってしまうと肝心なアルゴリズムが見えなくなってしまう。
977デフォルトの名無しさん
2019/02/21(木) 23:49:54.40ID:ckwx5Bag >>972
経緯からするとJavaから阻害されてC#立ち上げたけど、
たしかに書いてるとBasic臭がするよなぷんぷんと、VBはあんま詳しくないけど、
はじめて言語に触れたN88 Basic臭がツーンと脳裏のそこから蘇ったわ。思い出したくないヤーな感じ。
でもポインタ使えるのは確実にPost C
間接アドレッシング可能な言語はCの後継とみなしていいでしょ。
経緯からするとJavaから阻害されてC#立ち上げたけど、
たしかに書いてるとBasic臭がするよなぷんぷんと、VBはあんま詳しくないけど、
はじめて言語に触れたN88 Basic臭がツーンと脳裏のそこから蘇ったわ。思い出したくないヤーな感じ。
でもポインタ使えるのは確実にPost C
間接アドレッシング可能な言語はCの後継とみなしていいでしょ。
978デフォルトの名無しさん
2019/02/21(木) 23:58:57.84ID:zicwhEg7 疑似言語で書けよ
979デフォルトの名無しさん
2019/02/22(金) 00:15:39.44ID:pZ+8/QP0 >>976
> vectorやstringは普通にC++でプログラムできる環境なら使って問題ないだろ。。
C++は使うがvectorやstringはヒープ使うからNGの業界余裕であるから
というかこういうことに無頓着なやつはそれこそC#がお似合いだよ
> vectorやstringは普通にC++でプログラムできる環境なら使って問題ないだろ。。
C++は使うがvectorやstringはヒープ使うからNGの業界余裕であるから
というかこういうことに無頓着なやつはそれこそC#がお似合いだよ
980デフォルトの名無しさん
2019/02/22(金) 00:17:24.73ID:15zpzt8/ 普通の環境じゃねえだろカス
マウント取りたいがために文盲になるなよゴミ
マウント取りたいがために文盲になるなよゴミ
981デフォルトの名無しさん
2019/02/22(金) 00:20:30.83ID:pZ+8/QP0 いまどきC++を使う普通の環境って何さ?
982デフォルトの名無しさん
2019/02/22(金) 00:21:51.02ID:LT7BfZs3 競技プログラミング
983デフォルトの名無しさん
2019/02/22(金) 00:22:17.68ID:IIzWuIF1 普通とは
984デフォルトの名無しさん
2019/02/22(金) 00:24:11.03ID:pZ+8/QP0 競技プログラミングも時間制約あるから
バカみたいに動的確保、解放繰り返したらアウトになるよ
まぁどのみち趣味の領域だからご自由にだけど
バカみたいに動的確保、解放繰り返したらアウトになるよ
まぁどのみち趣味の領域だからご自由にだけど
985デフォルトの名無しさん
2019/02/22(金) 00:25:12.85ID:15zpzt8/ お前がこれを見てる箱はいったい何ですかねえ
986デフォルトの名無しさん
2019/02/22(金) 00:26:41.79ID:LT7BfZs3 質問なのですがスコープを抜けたら自動的にリソースを解放するクラスを作りたいのですが、
スマポ(メモリの解放)ならともかく解放がエラーになる可能性がある場合(ファイルのクローズとか)は
どう書けば良い
の?
スマポ(メモリの解放)ならともかく解放がエラーになる可能性がある場合(ファイルのクローズとか)は
どう書けば良い
の?
987デフォルトの名無しさん
2019/02/22(金) 00:28:07.98ID:15zpzt8/988デフォルトの名無しさん
2019/02/22(金) 00:31:00.86ID:vPOA5NhJ >>981
ラウンドロビン型 & ガベコレ 持ってるOS環境だ
今時raspi程度のハードであればこの環境を期待できる。
RTOSやOSレスなどハードの一部として動作させたいアプリケーションならさにあらず。
業界で判断する話じゃなくアプリケーション内容で判断する内容だろがよゴミ
ラウンドロビン型 & ガベコレ 持ってるOS環境だ
今時raspi程度のハードであればこの環境を期待できる。
RTOSやOSレスなどハードの一部として動作させたいアプリケーションならさにあらず。
業界で判断する話じゃなくアプリケーション内容で判断する内容だろがよゴミ
989デフォルトの名無しさん
2019/02/22(金) 00:31:39.71ID:LT7BfZs3 いや正解とか難易度が謎設定な競技プログラミングもあるから…
Top Coder Openとか…
Top Coder Openとか…
990デフォルトの名無しさん
2019/02/22(金) 00:32:37.96ID:LT7BfZs3 ガベコレとか
なんと
贅沢な
なんと
贅沢な
991デフォルトの名無しさん
2019/02/22(金) 01:22:11.67ID:W4Z6mzSx Quora には、C, C++, JavaScript, Java, Python, Web Development の
板はあっても、C#の板は無いらしい。
本場では C#に人気が無いのか。
板はあっても、C#の板は無いらしい。
本場では C#に人気が無いのか。
992デフォルトの名無しさん
2019/02/22(金) 01:28:54.91ID:W4Z6mzSx >>977
C#は、N88-BASICより、Visual Basic 臭がする。
前者は PC-8801 時代には人気が有った。PC-9801 時代には余りなくなったが、
PC-9801 版の N88-BASIC は「雰囲気」が違っていて、実は MS 製ではなく、
NEC製になってしまっていたからかもしれない。
C#は、N88-BASICより、Visual Basic 臭がする。
前者は PC-8801 時代には人気が有った。PC-9801 時代には余りなくなったが、
PC-9801 版の N88-BASIC は「雰囲気」が違っていて、実は MS 製ではなく、
NEC製になってしまっていたからかもしれない。
993デフォルトの名無しさん
2019/02/22(金) 01:30:06.16ID:IIzWuIF1 C#もVBも.NETが前提だから、.NETを使う以上はどれも方言みたいなもんだろ
994デフォルトの名無しさん
2019/02/22(金) 01:38:49.66ID:W4Z6mzSx 考えてみれば、.NET の仮想コードは、BASIC時代に「中間言語」と呼ばれていた
ものと全く同じといっても過言ではないと思えてきたりする。つまり、C#自体が
BASICを変に拡張して使いにくくしてしまった変態言語に他ならない。
ものと全く同じといっても過言ではないと思えてきたりする。つまり、C#自体が
BASICを変に拡張して使いにくくしてしまった変態言語に他ならない。
995デフォルトの名無しさん
2019/02/22(金) 01:40:23.87ID:HDWd0btt 今時、中間言語なしは少数派じゃないかという雰囲気があるが
996デフォルトの名無しさん
2019/02/22(金) 01:42:25.76ID:pZ+8/QP0997デフォルトの名無しさん
2019/02/22(金) 01:43:35.28ID:W4Z6mzSx よく探すと、Quora にも C# 板があり、
C++ 758.3K followers
C# 276K followers
となっているようだ。C# は C++ の 1/3 の人気しか無いらしい。
C++ 758.3K followers
C# 276K followers
となっているようだ。C# は C++ の 1/3 の人気しか無いらしい。
998デフォルトの名無しさん
2019/02/22(金) 01:51:30.87ID:15zpzt8/ >BASICを変に拡張して使いにくくしてしまった
wwwwwwwwwww
wwwwwwwwwww
999デフォルトの名無しさん
2019/02/22(金) 01:54:47.58ID:15zpzt8/1000デフォルトの名無しさん
2019/02/22(金) 02:02:01.14ID:W4Z6mzSx goto 文は行番号と相性が良くて、当時、実はスパゲッティーになってなかったな。
構造化命令を使わなくても、行番号のおかげで見やすかった。
構造化命令を使わなくても、行番号のおかげで見やすかった。
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 39日 20時間 5分 39秒
新しいスレッドを立ててください。
life time: 39日 20時間 5分 39秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
