[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 03:13 / Filesize : 247 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part146



1 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 11:35:36.76 ID:4wggfTwe.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part145
mevius.5ch.net/test/read.cgi/tech/1568362404/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

728 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 22:13:42.05 ID:KRZcErEE.net]
isspace('\t')は非0(真)なので'\t'は空白のはずェ、

つかGoogle Testにかけたらこうじゃわ↓↓↓
TEST(stdlibTest, ctype) {
ASSERT_FALSE(isspace('\0'));
ASSERT_TRUE(isspace('\n'));
ASSERT_TRUE(isspace('\r'));
ASSERT_TRUE(isspace('\t'));
ASSERT_TRUE(isspace(' '));

ASSERT_TRUE(iscntrl('\0'));
ASSERT_TRUE(iscntrl('\n'));
ASSERT_TRUE(iscntrl('\r'));
ASSERT_TRUE(iscntrl('\t'));
ASSERT_FALSE(iscntrl(' '));
}

729 名前:デフォルトの名無しさん [2019/12/07(土) 23:02:18.90 ID:cPeMBqq7.net]
盲目の為のロケールがあったら、ベル以外全部制御文字になるんだろか。

730 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 23:12:25.74 ID:fV2E4bDP.net]
0x00から0x1fまでは全部制御文字で違和感ないけど。

731 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 23:19:02.06 ID:EVNez7Da.net]
printableってのは音声出力も含むのではなかろうか

732 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 02:49:31 ID:C6vow3qq.net]
盲人のブログラマーって普通にいるんだな
なんかかっけーな

733 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 08:37:40.25 ID:9eRqVWoa.net]
Visual Studio 16.4オンラインアプデしたら
それまで使ってたParallel Studio2019 U5使えなくなった。
Visual C++でコンパイルできるがIntel Compilerはコンパイル失敗してしまう
それと、
プロジェクトのプロパティからIntel Compilerは選択できるんだが、
プルダウンメニューからIntel Compilerを選択できないようになった。
Parallel Studio最インスコしてもコンパイルは失敗する。2019 U5 が16.4に対応してないとかないよね?

734 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 08:39:40.14 ID:drue7Jpy.net]
>>713
例によってロケール依存らしいが "C" だと
iscntrl() が真を返す値は 0x00-0x1f, 0x7f みたいね。
これまた例によって unsigned char 範囲と EOF 以外の値については未定義。

つうか、このくらいは5ちゃんねる以外から情報を探す方が
早くて確実じゃないかしら。

735 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 13:11:02.08 ID:hM3Qn2JU.net]
C++で作ったブラウザテニスゲーム(PWA仮対応):
https://yutakaaoki.github.io/demo_tennis/
Wasm+PWA+WebGL+"C++"

736 名前:デフォルトの名無しさん [2019/12/08(日) 14:09:36.54 ID:3pi+cAN/.net]
>>722
青木さんは何をしようとしてるんですか?



737 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 14:17:37.03 ID:vN1dzuVf.net]
>>722
で、質問は?

738 名前:デフォルトの名無しさん [2019/12/08(日) 14:36:36.30 ID:3pi+cAN/.net]
もっと早くは最速って意味ですか?
それとも速くしたいって意味ですか?

739 名前:デフォルトの名無しさん [2019/12/08(日) 14:56:59.55 ID:3pi+cAN/.net]
インテリコード、ほんとに提案してくるね。
お前は次にこう書く・・・って。

740 名前:デフォルトの名無しさん [2019/12/08(日) 15:02:14.03 ID:J+6Nu+8f.net]
歯垢の妨げにしかならんわ

741 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:09:58.86 ID:hM3Qn2JU.net]
>>723
C++ Nex という言語とそのIDEを作ってますが、マルチプラットフォームの
ツールキットも同時に作ってます。MacやiOSなどまで native 対応するのは
貧乏なので機材の関係で難しいので、wasm に対応することでひとまずは
凌ごうかと思いました。

ツールキットのソースをBSD/MIT系ライセンスで公開して、C++ Nex も
無料で使えることにして、みなさんのお力をお借りして native対応の
ツールキットに出来ればいいのですが。ひとまず、Windows/Wasm/Android
くらいまでなら対応できる目処は立ってます。iOSについては、swift
言語が出したオブジェクトファイルとリンクすることはWindows上でも
実験できそうなので、その基礎的な部分だけならMakefileなどの開発環境を
用意することはできそうです。

Mac miniがあれば、iOS native 対応も出来そうなんですが。

742 名前:デフォルトの名無しさん [2019/12/08(日) 17:29:31.80 ID:3pi+cAN/.net]
基本的にネイティブ志向なんですね。

743 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:29:36.52 ID:oOCB7Yl8.net]
>>728
ソースコード見せて

744 名前:デフォルトの名無しさん [2019/12/08(日) 17:30:50.90 ID:3pi+cAN/.net]
ウェブアセンブラは興味あるんだけど、イマイチ情報が。

745 名前:デフォルトの名無しさん [2019/12/08(日) 17:32:13.08 ID:3pi+cAN/.net]
高橋茉奈著やさしいウェブアセンブラが待たれる今日この頃。

746 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:37:23.93 ID:hM3Qn2JU.net]
>>730
ライセンスは、BSD, MIT, LGPL(静的リンクしてもGPL感染しない例外あり) の
どれかにするか迷っています。



747 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 17:43:51.77 ID:8Jdq2NjK.net]
WTFPLライセンスにしようぜ

748 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 23:33:02 ID:Cj3eSjEv.net]
>>721
>"C" だと
>iscntrl() が真を返す値は 0x00-0x1f, 0x7f

ほう、そんなことが規格のどこにかいてあるのですか

749 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 23:58:38 .net]
>>722
Android 4.4.2 Chromeで動作した

750 名前:デフォルトの名無しさん [2019/12/09(月) 01:41:27 ID:ExBOPGUm.net]
ID無いのは5chの人って事?

751 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 01:45:35 ID:aHmkn8DW.net]
有料ユーザーってこと

752 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 01:45:54 ID:dDDj5i4x.net]
これ5chじゃなかったの?

753 名前:デフォルトの名無しさん [2019/12/09(月) 02:33:36.15 ID:ExBOPGUm.net]
そうなんだ。

754 名前:デフォルトの名無しさん [2019/12/09(月) 02:41:32 ID:ExBOPGUm.net]
>>739
なかの人はID付かないのかなって。

755 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 08:06:32.09 ID:V5HcCSm8.net]
>>735
C++ の規格が引用してる C の規格じゃないかな。

質問のつもりで書いてるなら、あまりに態度が悪い気がするし、
「その投稿の内容は間違ってる」と主張したいなら、
もっと直接的・具体的に間違ってるという根拠を示すべきだと思うよ。

756 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 09:58:16 ID:CUCDgsHX.net]
>>736
ありがとう。



757 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 17:54:07.48 ID:c5eP1gUS.net]
>>742
デタラメぬかしておいて根拠を求められたら示せないばかりか
オマエこそデタラメである根拠を出せとか、さすがですね

758 名前:720 mailto:sage [2019/12/09(月) 18:35:46.39 ID:ZGVF76Fo.net]
自己レスです

Visual Studio 16.4では
Intel Parallel Studio 2019 u5は動かないようです。
16.3に戻せないし
どーしよー

https://software.intel.com/en-us/forums/intel-c-compiler/topic/840467

759 名前:デフォルトの名無しさん [2019/12/09(月) 19:45:24.14 ID:ExBOPGUm.net]
POSIXには明確にCロケールの定義が書かれていた。

760 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 20:19:32.09 ID:B3OID8x5.net]
>>745
今のVSの最新版は人柱仕様であり、検証無しでプロダクション用をアップデートしてはいけません
勉強になったねー

761 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 21:02:54.27 ID:HdhKIpY6.net]
昔からVSはそんなもんだ。
てかc++コンパイラなんて全部そんなもんだ。

762 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 21:45:50.54 ID:P+A0aO3e.net]
>>745
リンク先に回避策があるって書いてあるやん

763 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 21:53:17.84 ID:G+eF5KMH.net]
>>746
それはCの規格と必ずしもイコールではないがな。

764 名前:デフォルトの名無しさん [2019/12/09(月) 22:32:03.14 ID:ExBOPGUm.net]
どういうことですか。

765 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 23:24:28.11 ID:qFr59Y2H.net]
POSIX には ISO C には無い追加の定めがあり、したがって

766 名前:> POSIX にある定めは必ずしも ISO C 一般に言えることではないということです。 []
[ここ壊れてます]



767 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 23:30:20.36 ID:c5Uv/Cv5.net]
わかったはもうこれからはstd::isspace()とstd::iscntrl()を使うは

768 名前:デフォルトの名無しさん [2019/12/09(月) 23:43:16.79 ID:ExBOPGUm.net]
メンバ変数にstd::listを使うと移動コンストラクタがnoexceptに出来ないのですが。
こんな時はどうするのでしょう。

769 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 23:58:06.53 ID:aHmkn8DW.net]
メンバのstd::listをポインタにする

770 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 23:59:06.89 ID:qFr59Y2H.net]
>>754
まず何を見て「出来ない」と言っているのかを明らかにします。

771 名前:デフォルトの名無しさん [2019/12/10(火) 00:04:16.84 ID:KeuWZv5z.net]
https://ja.cppreference.com/w/cpp/container/list/list
僕はいつもここを見ます。

772 名前:デフォルトの名無しさん [2019/12/10(火) 00:06:34.29 ID:KeuWZv5z.net]
std::swapの特殊化がnoexceptです。
これを使いますか。

773 名前:デフォルトの名無しさん [2019/12/10(火) 00:08:47.32 ID:KeuWZv5z.net]
引数無しのコンストラクタがnoexceptじゃないから無理でした。

774 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 00:37:17 ID:OASxW0Hh.net]
そもそも noexcept にする必要性が不明だし、呼び出してる関数が
全部 noexcept じゃなくても std::list 実装を限定してよかったり、特定実装での
bad_alloc =即死の不都合が必要性と釣り合うなら noexcept にすることはできるし、
最大限の移植性も bad_alloc の通知も noexcept もすべて本当に必要なら
>755 でポインタって答えも出てるのに。

775 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 00:41:00 ID:2YzAsKi1.net]
自動でnoexceptに成らないなら、自分で望みのnoexceptの定義すりゃ良いだろうに
部品が例外投げるなら内部でcatchして適切に処理すればいい

776 名前:デフォルトの名無しさん [2019/12/10(火) 00:43:28.28 ID:KeuWZv5z.net]
https://github.com/isocpp/CppCoreGuidelines
これです。



777 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 07:32:12 ID:Xhvd8FYl.net]
>>761
正論

778 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 19:05:35.05 ID:yM6al2d7.net]
途中でcコード通るとか何らかの理由があるんだろう。

779 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:14:22.35 ID:KfdgnhFC.net]
ある一つの変数に対してstd::threadで作成したプロセスは値を更新し続けて、メイン関数の方では値を読み続ける場合は排他処理する必要はありませんか?
メイン関数の方は必要なときだけ値が読めればいいので読みこぼしは無視していいです

780 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:19:53.65 ID:iOg65oSz.net]
>>765
変数が std::atomic<T> でなければ排他制御の必要があります。

781 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:21:20.19 ID:m9WEF2SZ.net]
>>765
atomicでないとだめ。プリミティブな型でもあやしい。
りーどらいとろっくするがよい。

782 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:23:21.98 ID:/1t9T7AP.net]
基本型かつ確実にレジスタでなくメモリに書き出されているならそうだね
std::atomcを使うのが無難
その条件ならmemory_order_relaxedを指定すればバリアのオーバーヘッドは避けられる
面倒だけどね

783 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:35:45.33 ID:IATqHbi6.net]
質問者じゃないけど
読みこぼしとかタイミングによるズレが問題ないとしても排他制御なしに読み書きする時点で未定義動作だからNG
って認識でおk?

784 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 13:46:34.56 ID:iOg65oSz.net]
はい。
https://timsong-cpp.github.io/cppwp/n4659/intro.multithread#intro.races-20
> The execution of a program contains a data race if it contains two
> potentially concurrent conflicting actions, at least one of which is
> not atomic, and neither happens before the other, except for the
> special case for signal handlers described below. Any such data race
> results in undefined behavior.

785 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 14:00:16.36 ID:/1t9T7AP.net]
言語仕様はそうだろうけど
x86なら実際は多くの場合バリア不要だったりするから
最終的にどういうinstructionになっているのか知っておくと理解が深まる

786 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 15:24:29 ID:nkoUZIKM.net]
x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ

これ以外だったり同期が必要なければ
排他制御は不要

もちろん、
一連のデータリード



787 名前:ナデータの一貫性が必要であれば一貫性確認の仕組みなり排他制御なりは当然必要だし、
コンパイラが読み書きを省略する可能性のあるコードであれば
volatileを付けるなど、省略を防ぐ必要はある

ymmレジスタを使えばアトミックな読み書きが出来るので
256bit以内なら一貫性も保てる

マルチコアARMの場合は
DMB命令を入れておけば確実

パフォーマンスに問題が無い箇所であれば、
移植性の為にも、素直にC++の排他制御を入れておこう!
[]
[ここ壊れてます]

788 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 15:42:23 ID:ax9A/ZTc.net]
お前らRustに移行とか考えたりするの?

789 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 17:37:57.91 ID:bM/oaPHs.net]
>>773
個人的には絶対に移行したくないと思っている。

790 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 17:42:08.10 ID:/1t9T7AP.net]
どっちもやったらええがな

791 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:13:18.74 ID:bM/oaPHs.net]
>>771
質問されたような簡単な場合であっても、少なくとも、80386系CPUでも、
物理CPUを2つ積んでいるようなマシンだと、色々な配慮が必要。
一つの理由は、CPUキャッシュが外部メモリに反映されていない場合が
あるため。
もう一つは、値の変化のタイミングがコードに書いた通りで無い事があり、
僅かにタイミングがずれることで、「すれ違い」現象の様なことが
おきることがある。これが起きると、変数の値をフラグ的に利用して
厳密に何かをやりたい場合に非常に致命的な問題を生じてしまうことがある。
これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
していたらしい。
2つのスレッドでデータをやり取りする場合には色々と注意が必要で、
普通はデータが準備できたかどうかをCreateEvent(),SetEvent(),
WaitForSingleEvent()などで待機して処理するのが基本。

792 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:17:08.59 ID:bM/oaPHs.net]
>>776
スマン。XOR交換命令ではなく、xchg命令だった。

793 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:20:46.73 ID:NtLrnXCf.net]
goよりかはrustの方が全然マシやと思うぞ
最近go案件振られること多いけどC言語触ってるみたいで好きになれんわ〜

794 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:30:30.06 ID:/1t9T7AP.net]
>>776
xchgはsequential consistencyが必要な場合だよ
今回のように単にatomicにread/writeできればいいだけなら不要
お前さんも含めてよくわからん人は使わないのは正解

795 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:36:33.88 ID:bM/oaPHs.net]
>>779
正直言って、俺は、lock, xchg, mfence, prefetch,
キャッシュ制御付き(?)mov各種(大量)
に付いてはちゃんと理解出来てないことは認める。

796 名前:デフォルトの名無しさん [2019/12/11(水) 18:38:56.23 ID:bM/oaPHs.net]
MFENCE
PREFETCH
MOVNTDQA
LFENCE(?)
XCHG
LOCK prefix
WC Memory

↑沢山あるけど、よく分からない。
xchgもちゃんと理解できてない。



797 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:39:59.12 ID:bM/oaPHs.net]
MFENCE, LFENCE, SFENCE。

服のサイズみたいだ。分からん。

798 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 18:46:12.74 ID:bM/oaPHs.net]
>>779
xchgは、2つ以上のCPUが1つの事柄に関する lock を同時に獲得しようとした時に
1 CPU だけが lock を獲得できて、他はすべて獲得できないようにするための
ためのようですね。今回とは余り関係ないようです。

799 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 21:50:49.53 ID:10jfhd7e.net]
>>777
XORを使った交換テクニックがあったのを思い出した

800 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 00:31:42.87 ID:n5d2iAqE.net]
>>765
その場合でも排他制御は基本的には必要。
たとえば読み込んで範囲チェックをした後に値が変わってしまったらまずいでしょ。
別メモリにコピーを取っていてから処理しているつもりでも、最適化が気を利かして削除しちゃうこともあるだろうしね。

801 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 00:36:46.28 ID:n5d2iAqE.net]
>>765
あとはアレだな、変数の構造にもよるけど、変数を読み込んでる最中に、上位ワードを読み込んだ後に値が変わって下位ワードだけ新しくなるなんてことも
可能性としては0とは言えない。

802 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 00:54:16 ID:UvCIGzud.net]
AVXを使えば256bitを1命令で
AVX512を使えば512bitを1命令で
読み書き可能

803 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 01:00:12 ID:UvCIGzud.net]
x86系だとCMPXCHG命令
ARMだとLL, AC命令

がデータの一貫性確認に使える

804 名前:デフォルトの名無しさん [2019/12/12(Thu) 03:03:25 ID:hmkgwwLY.net]
とんちプログラミングはもう流行らなさそう。

805 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 03:28:17.88 ID:J/GuvI9A.net]
とんちプログラミングwww

806 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 03:55:57 ID:g+q4RhTJ.net]
> これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
> していたらしい。

当たり前じゃね?アトミックな命令を使うのは基本だと思うが



807 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 07:30:46.73 ID:UvCIGzud.net]
XOR

808 名前:デフォルトの名無しさん mailto:sage [2019/12/12(Thu) 07:43:20 ID:Vt8W+oPZ.net]
xor rax,rbx
xor rbx,rax
xor rax,rbx
これでswap rax,rbx相当ってことね

809 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 07:53:00.21 ID:UvCIGzud.net]
>>777

810 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 10:43:59.85 ID:r0VN1UlG.net]
condition_variableで待機しているスレッドがない状態でnotify_allしたときの動作ってどうなりますか?

811 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 10:56:19.34 ID:WJA8YZFG.net]
時空が逆流し、針の先から悪魔が生まれる

812 名前:デフォルトの名無しさん [2019/12/12(木) 11:06:56.29 ID:a67Hqgb2.net]
jsに対するTypeScriptみたいな感じで
C++に対するRustっていう認識は間違ってるが
それならC++に対するそれは何が適当なんかある?

813 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 11:10:12.33 ID:Vt8W+oPZ.net]
allに該当する要素の数が0なのを特別視する必要はなさそう

814 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 11:21:14.68 ID:NrsugUJv.net]
非同期な操作やしその瞬間何も起きんなら単にスルーするだけ

815 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 12:01:38.93 ID:Z8SHCwDj.net]
>>797
無い。

816 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 12:26:43.11 ID:gL/Y8Ccu.net]
>>797
Managed C++とかC++/CLIとか



817 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 13:04:34.98 ID:Z8SHCwDj.net]
>>801
それだと余計に変になっているので、JS ---> TypeScript の関係とは違う。

818 名前:デフォルトの名無しさん [2019/12/12(木) 13:08:42.86 ID:b3wcvAqB.net]
C++は型安全だからC++はC++

819 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 14:17:55.83 ID:CNmkwPhj.net]
型安全認定された!

820 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 14:59:18.45 ID:ZWrMIDdu.net]
ていうかTypeScriptはJSが型があまりにもザルすぎて危険だよね、Javaやら
C/C++ほど堅くないにしてもある程度の型はいるよね?っていう発想ででてきた
ものだから C++ から寄せていくならむしろ型をユルくしてくパターンだな
そんなクソ言語には興味がないので具体的に何?ときかれても知らんがな

821 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 16:27:22.69 ID:AVYkL4QT.net]
JSが危険ってどういう事?

C/C++は型がない=危険だけど
JSなんかは型安全な言語だからちゃんと例外になって、
メモリ保護エラーとか起こすこと無いけど?

822 名前:デフォルトの名無しさん [2019/12/12(木) 16:39:21.91 ID:hmkgwwLY.net]
Treeの節(Node)は部分木を表すRangeだと考えて差し支えないですかね?

823 名前:デフォルトの名無しさん [2019/12/12(木) 16:47:21.68 ID:hmkgwwLY.net]
C++20のレンジってもしかしてDBのカーソルとかに応用できませんかね?

824 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 18:38:14.77 ID:Ijd1d2r8.net]
毎回フルスキャンしたいならどうぞ

825 名前:デフォルトの名無しさん [2019/12/12(木) 18:59:14.59 ID:hmkgwwLY.net]
ビューで制限できるし遅延評価を目的としたストリームを代弁できるんじゃないかなって思ったのですが。

826 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 19:07:50.30 ID:Z8SHCwDj.net]
>>806
型も宣言も無い事が危険になることが多い。
例えば、関数を定義しても仮引数に型がないので、全く間違った実引数列
を指定してしまっても処理系がエラーを出してくれない。関数を修正して
仮引数列の真ん中あたりに新しい仮引数を一つ増やしたとする。
この場合、この関数を呼び出す側もちゃんと全て修正する必要がある。
Cだと型をチェックしてくれるので修正の仕方を間違うとエラーになって
くれることが多い。ところがJSだと間違っても全くエラーを出してくれない。

また、JSの場合、ローカル変数とグローバル変数を間違って使ってしまい、
グローバル変数にいれたつもりがローカル変数になってしまっていることがある。

また、変数を1文字間違えた場合も全くエラーにならず、新しいグローバル変数
が使用されたと解釈されてしまう。

どれも、C言語だとエラーになってくれるので安全だが、JSだと危険。



827 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 19:25:03.70 ID:AVYkL4QT.net]
>>811
お前が型安全の意味を間違ってるってことはよく分かった。

メモリ保護エラーなど言語で解決されないエラー
(OSがトラップするエラー)になってしまうことを
型安全じゃないっていうんだよ

言語で例外になるならそれは型安全

828 名前:デフォルトの名無しさん mailto:sage [2019/12/12(木) 19:44:50.53 ID:Vt8W+oPZ.net]
ぬるぽ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef