C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part149
https://mevius.5ch.net/test/read.cgi/tech/1581974381/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
テンプレここまで
C++相談室 part150
■ このスレッドは過去ログ倉庫に格納されています
2020/03/24(火) 00:04:33.93ID:YFRNwZnv
270デフォルトの名無しさん
2020/04/11(土) 14:41:37.00ID:gbVtYUoz272デフォルトの名無しさん
2020/04/11(土) 15:00:39.77ID:xAZRHMqH >>270
らぶりーさまーちゃん。
らぶりーさまーちゃん。
273デフォルトの名無しさん
2020/04/11(土) 15:38:18.09ID:XnsLNB9H 学術の巨大掲示板群 - アルファ・ラボ
ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
274デフォルトの名無しさん
2020/04/16(木) 13:35:18.13ID:VLcNbPWE RTTIをプログラムの一部で使用した場合
使用していない部分でもRTTIを有効にしたデメリット(実行速度など)の影響を受けますか?
使用していない部分でもRTTIを有効にしたデメリット(実行速度など)の影響を受けますか?
275デフォルトの名無しさん
2020/04/16(木) 18:37:14.68ID:ojSHK+XP はい
276デフォルトの名無しさん
2020/04/16(木) 20:13:11.58ID:4a+SNA6K RTTIって何だっけ要るときになったら確保とかいうやつだっけ
277デフォルトの名無しさん
2020/04/16(木) 22:00:12.32ID:ojSHK+XP dynamic_castとtypeidを使う時に必要な機能
278デフォルトの名無しさん
2020/04/17(金) 01:51:17.05ID:675DQ/0u279デフォルトの名無しさん
2020/04/17(金) 10:38:52.67ID:xoWFQBId バイナリサイズなんか見りゃわかるのにな
280デフォルトの名無しさん
2020/04/17(金) 12:21:47.73ID:ojp4wJFZ C++の設計思想としては
Cで同じコードを書けば同じ速度、リソースで実行出来るのを目指している
で基本的には思想通りに仕上がってる
Cで同じコードを書けば同じ速度、リソースで実行出来るのを目指している
で基本的には思想通りに仕上がってる
281デフォルトの名無しさん
2020/04/18(土) 02:08:36.18ID:MF/MkUpw 関数形式のキャストってあるじゃん
int(a)みたいの
これのlong long版ってあるの?
スペースを含んでいるのだが(笑)
int(a)みたいの
これのlong long版ってあるの?
スペースを含んでいるのだが(笑)
282デフォルトの名無しさん
2020/04/18(土) 02:19:16.25ID:kdY61W0J (long long)(x)
283デフォルトの名無しさん
2020/04/18(土) 03:10:07.72ID:qNMUbfyc284デフォルトの名無しさん
2020/04/18(土) 03:11:31.94ID:qNMUbfyc >>283
(TYPE)x // 原初的なCから存在していた旧来のキャスト形式
TYPE(x) // C++ で追加された関数形式のキャスト
(TYPE)x // 原初的なCから存在していた旧来のキャスト形式
TYPE(x) // C++ で追加された関数形式のキャスト
285デフォルトの名無しさん
2020/04/18(土) 04:06:49.73ID:ci0mR+IB reinterpret_castな
286デフォルトの名無しさん
2020/04/18(土) 04:16:44.40ID:8yR++2ZI287デフォルトの名無しさん
2020/04/18(土) 06:55:36.12ID:x+kfoWax >>281
static_cast使え
static_cast使え
288デフォルトの名無しさん
2020/04/18(土) 07:27:51.97ID:jy7ENsJ8 std::intmax_t(a)だろ
289デフォルトの名無しさん
2020/04/18(土) 12:36:01.68ID:msudwh4N 関数形式のキャストって、キャスト演算子をオーバーロードするとき
間接的にしかお世話になってない希ガス、
旧来のキャスト形式に対して他になんかメリットあんの?
間接的にしかお世話になってない希ガス、
旧来のキャスト形式に対して他になんかメリットあんの?
290デフォルトの名無しさん
2020/04/18(土) 12:39:19.24ID:gzWZknQs コンストラクタによる変換と一貫してて見やすい(個人差があります
291デフォルトの名無しさん
2020/04/18(土) 13:54:50.01ID:lQefZc9Y >>289
コンストラクタとの一貫性を持たせることでtemplateを書くときに何か都合がいいとどこかで読んだ気がするが、うろ覚えなので間違ってたらスマン
コンストラクタとの一貫性を持たせることでtemplateを書くときに何か都合がいいとどこかで読んだ気がするが、うろ覚えなので間違ってたらスマン
292デフォルトの名無しさん
2020/04/19(日) 19:48:59.49ID:/iMmv/v9 printfで標準出力に一行づつ出力するのが面倒なので、複数行をビアドキュメントで出力したいのですが、何か方法はありますか?
293デフォルトの名無しさん
2020/04/19(日) 20:27:57.52ID:X1m2vVHB294デフォルトの名無しさん
2020/04/19(日) 20:39:55.02ID:t9NoLnqH295デフォルトの名無しさん
2020/04/19(日) 23:27:06.24ID:/iMmv/v9296デフォルトの名無しさん
2020/04/20(月) 10:40:59.97ID:gGVXVDIS 複数行ってそういう意味か?ω
出力は改行せんでええんか?ωωω
出力は改行せんでええんか?ωωω
297sage
2020/04/20(月) 14:01:38.37ID:H+0bMHyU 絶対に大丈夫なやり方は、こう :
printf(
"xxxx\n"
"xxxx\n"
);
printf(
"xxxx\n"
"xxxx\n"
);
298デフォルトの名無しさん
2020/04/20(月) 14:31:21.88ID:8N3nnwLC 絶対に大丈夫とは?
299デフォルトの名無しさん
2020/04/20(月) 23:26:51.20ID:7b1yqLmK ドキュメント
300デフォルトの名無しさん
2020/04/22(水) 13:20:56.58ID:v2BILLR9301デフォルトの名無しさん
2020/04/22(水) 13:21:38.64ID:v2BILLR9 あ、ideoneじゃないcodepad
すまん
すまん
302デフォルトの名無しさん
2020/04/22(水) 13:45:29.47ID:naSkUAWb303はちみつ餃子 ◆8X2XSCHEME
2020/04/22(水) 14:11:59.93ID:x0z1Sb8H >>300-301
スコープ無し列挙定数は全ての列挙子の値を表せる整数型が基底になる。
ただし、全ての列挙子の値が int か unsigned int に収まるならば int より大きくなることはない。
この場合は int で表せないのでもっと大きい型にしたいけど最大の整数型である long でも
表せないのでお手上げって言ってる。
codepad は gcc 4.1.2 を使ってる。
つまりその時点での最新仕様は C++03 で、C++03 には long long なんていう型はない。
long 型が最大の整数。
(実際には処理系の拡張として __int64_t という名前で 64bit 整数も使えたりはするんだけど、
enum 関連で使用されるようにはなってないっぽい。)
スコープ無し列挙定数は全ての列挙子の値を表せる整数型が基底になる。
ただし、全ての列挙子の値が int か unsigned int に収まるならば int より大きくなることはない。
この場合は int で表せないのでもっと大きい型にしたいけど最大の整数型である long でも
表せないのでお手上げって言ってる。
codepad は gcc 4.1.2 を使ってる。
つまりその時点での最新仕様は C++03 で、C++03 には long long なんていう型はない。
long 型が最大の整数。
(実際には処理系の拡張として __int64_t という名前で 64bit 整数も使えたりはするんだけど、
enum 関連で使用されるようにはなってないっぽい。)
304デフォルトの名無しさん
2020/04/22(水) 16:04:43.48ID:v2BILLR9 >>303
レスthx
clはデフォC++14なのでlong longがあるはずなのに
何でtest2がlong止まりなのって話
std::cout << typeid(test2).name() << std::endl;
とやってみても
enum `int __cdecl main(void)'::`2'::<unnamed-enum-test2>
となるだけでlongかどうかは確認できない
さらに
void func(int) { std::cout << "int" << std::endl; }
void func(long) { std::cout << "long" << std::endl; }
これだと出力がintになる
レスthx
clはデフォC++14なのでlong longがあるはずなのに
何でtest2がlong止まりなのって話
std::cout << typeid(test2).name() << std::endl;
とやってみても
enum `int __cdecl main(void)'::`2'::<unnamed-enum-test2>
となるだけでlongかどうかは確認できない
さらに
void func(int) { std::cout << "int" << std::endl; }
void func(long) { std::cout << "long" << std::endl; }
これだと出力がintになる
305はちみつ餃子 ◆8X2XSCHEME
2020/04/22(水) 17:35:14.20ID:x0z1Sb8H >>304
> clはデフォC++14なので
cl っていうと Common Lisp を連想してまう……というのは余談として、
それは動作環境を用意できてないからこっちで実行できへんのや。
結果が違うってのはどうなるの?
実行結果も示してくれへん?
あと 64bit 版か 32bit 版かも明示してや。
> longかどうかは確認できない
列挙型はあくまでも個別の列挙型であって整数ではないので、
基底型が何かというのは std::underlying_type で調べる必要がある。
> clはデフォC++14なので
cl っていうと Common Lisp を連想してまう……というのは余談として、
それは動作環境を用意できてないからこっちで実行できへんのや。
結果が違うってのはどうなるの?
実行結果も示してくれへん?
あと 64bit 版か 32bit 版かも明示してや。
> longかどうかは確認できない
列挙型はあくまでも個別の列挙型であって整数ではないので、
基底型が何かというのは std::underlying_type で調べる必要がある。
306はちみつ餃子 ◆8X2XSCHEME
2020/04/22(水) 17:39:14.29ID:x0z1Sb8H godbolt で確認しようとしたら
LINK : fatal error LNK1104: cannot open file 'libcpmt.lib'
と出るんやが……
LINK : fatal error LNK1104: cannot open file 'libcpmt.lib'
と出るんやが……
307デフォルトの名無しさん
2020/04/22(水) 17:47:08.07ID:v2BILLR9 >>305
Visual Studioと言えば通じる?
underlying_typeか、こいつは情報ごっつぁん
std::cout << typeid(typename std::underlying_type<decltype(test2)>::type).name() << std::endl;
これの出力もintだった
Visual Studioと言えば通じる?
underlying_typeか、こいつは情報ごっつぁん
std::cout << typeid(typename std::underlying_type<decltype(test2)>::type).name() << std::endl;
これの出力もintだった
308はちみつ餃子 ◆8X2XSCHEME
2020/04/22(水) 18:05:31.28ID:x0z1Sb8H >>307
> Visual Studioと言えば通じる?
コマンドが cl というのは知ってはいるんだけど、コンパイラの名前として cl っていうのは伝わり難いと思う。
マイクロソフトのドキュメントでは Microsoft C++ か MSVC という書き方をしていることが多いようなので、
たぶんそれが公式な呼び方なんじゃないかな。
> これの出力もintだった
値は何になってる?
> Visual Studioと言えば通じる?
コマンドが cl というのは知ってはいるんだけど、コンパイラの名前として cl っていうのは伝わり難いと思う。
マイクロソフトのドキュメントでは Microsoft C++ か MSVC という書き方をしていることが多いようなので、
たぶんそれが公式な呼び方なんじゃないかな。
> これの出力もintだった
値は何になってる?
309デフォルトの名無しさん
2020/04/22(水) 18:08:15.75ID:v2BILLR9 値はもうあんまり興味なかったが
一応試したらやっぱり0だった
一応試したらやっぱり0だった
310はちみつ餃子 ◆8X2XSCHEME
2020/04/22(水) 18:26:25.82ID:x0z1Sb8H >>309
バグとして報告が出てたわ。
https://developercommunity.visualstudio.com/content/problem/524018/underlying-type-of-an-unscoped-enum.html
結論: MSVCのバグ。 gcc や clang が正しい。
バグとして報告が出てたわ。
https://developercommunity.visualstudio.com/content/problem/524018/underlying-type-of-an-unscoped-enum.html
結論: MSVCのバグ。 gcc や clang が正しい。
311デフォルトの名無しさん
2020/04/22(水) 23:26:04.67ID:CBtGJth1 き、君子危うきに近寄らず…!
312デフォルトの名無しさん
2020/04/22(水) 23:37:02.23ID:i2NtNOZ9 キミコってボトムズの主人公いたね
313デフォルトの名無しさん
2020/04/22(水) 23:46:36.87ID:mtNioQDL キミコ・ビューティフルだったか
314デフォルトの名無しさん
2020/04/23(木) 11:30:41.04ID:StmE//V5315デフォルトの名無しさん
2020/04/23(木) 12:32:25.65ID:GqVREd4h >>314
VS2013だし放置じゃね?
VS2013だし放置じゃね?
316デフォルトの名無しさん
2020/04/23(木) 13:12:45.41ID:StmE//V5 300で言ってたclは2019だよ
もち更新ちゃんとやってるやつ
もち更新ちゃんとやってるやつ
317はちみつ餃子 ◆8X2XSCHEME
2020/04/23(木) 13:27:01.39ID:Fyt21a0c >>315
最新のコメントに `_MSC_FULL_VER` が `192328105` の環境で再現すると書いてある。
これは Visual Studio 2019 version 16.3.2 のことだそうな。
https://cpprefjp.github.io/implementation.html#visual_cpp_ver
最新のコメントに `_MSC_FULL_VER` が `192328105` の環境で再現すると書いてある。
これは Visual Studio 2019 version 16.3.2 のことだそうな。
https://cpprefjp.github.io/implementation.html#visual_cpp_ver
318デフォルトの名無しさん
2020/04/23(木) 14:02:24.26ID:GqVREd4h あーすまん、ちゃんと見てなかった
2019でも起きるのに一年放置は長いな
型指定使えば済むやろ、で後回しにされてるのかも?
2019でも起きるのに一年放置は長いな
型指定使えば済むやろ、で後回しにされてるのかも?
319デフォルトの名無しさん
2020/04/23(木) 17:39:32.10ID:StmE//V5 だいたい出尽くした?
餃子さん情報2つもありがとう
リアルならバーでおごるところだ
餃子さん情報2つもありがとう
リアルならバーでおごるところだ
320デフォルトの名無しさん
2020/04/23(木) 17:56:49.02ID:HERx4kEF 本当は、64bit型が追加されたことはコンパイラ作者泣かせなんだ。
C++コンパイラはとても複雑になってしまっている上に新しい仕様が入ったことで組み合わせ爆発が起きて細かなバグが入り易い。
C++コンパイラはとても複雑になってしまっている上に新しい仕様が入ったことで組み合わせ爆発が起きて細かなバグが入り易い。
321デフォルトの名無しさん
2020/04/23(木) 18:03:51.55ID:HERx4kEF 型の「昇格」や、2項演算子における型の「統一」も、64bit型が入ったことで複雑さが増した。
普段当たり前すぎて気にしないことだが、
unsigned char ch = 1;
と書いた場合でも、右辺は最初 int 型整数と解釈されるが、型にうるさいC++においても、それよりバイト数の少ない ch に警告も無く代入できてしまう。
他にも、
ch += 2;
とした場合、2は、最初int型と解釈されるのに、それよりバイト数の小さい ch に何の警告も無く足せてしまう。
これらで警告が出たらコーディングの手間がかかり過ぎるためそうなっているとは分かるが、型安全なC++においては背後にどういう仕組みがあるのかと思ってしまう。
普段当たり前すぎて気にしないことだが、
unsigned char ch = 1;
と書いた場合でも、右辺は最初 int 型整数と解釈されるが、型にうるさいC++においても、それよりバイト数の少ない ch に警告も無く代入できてしまう。
他にも、
ch += 2;
とした場合、2は、最初int型と解釈されるのに、それよりバイト数の小さい ch に何の警告も無く足せてしまう。
これらで警告が出たらコーディングの手間がかかり過ぎるためそうなっているとは分かるが、型安全なC++においては背後にどういう仕組みがあるのかと思ってしまう。
322デフォルトの名無しさん
2020/04/23(木) 18:07:51.10ID:HERx4kEF >>321
unsigned char ch = 1 + 2;
と書いたとする。
右辺は、C言語の使用によれば、1も2もint型だとみなされてから計算され、
結果の3もint型である。普通、int i; に対して、
ch = i;
とすると当然エラーか警告が出るのに、
この場合には何もメッセージが出ずにコンパイラが通るはずだ。
これも背後にどの仕様が働いているのだろうか?
unsigned char ch = 1 + 2;
と書いたとする。
右辺は、C言語の使用によれば、1も2もint型だとみなされてから計算され、
結果の3もint型である。普通、int i; に対して、
ch = i;
とすると当然エラーか警告が出るのに、
この場合には何もメッセージが出ずにコンパイラが通るはずだ。
これも背後にどの仕様が働いているのだろうか?
323デフォルトの名無しさん
2020/04/23(木) 18:18:19.96ID:/EdNitWt char a = 0;
a += (char)0;
これも代入時にintから型変換
a += (char)0;
これも代入時にintから型変換
324デフォルトの名無しさん
2020/04/23(木) 18:19:27.29ID:mq+N4KeF 簡単な定数畳み込みして安全かどうか調べてるだけでしょ
gccの場合
char i = 255+1; # warningでる
char i = 1;
char j = 255+j; # warningでない
gccの場合
char i = 255+1; # warningでる
char i = 1;
char j = 255+j; # warningでない
325デフォルトの名無しさん
2020/04/23(木) 18:20:26.60ID:/EdNitWt 1+2*3
は警告が出ないのに
1<<2+3
は警告が出るとか
色々と恣意的
は警告が出ないのに
1<<2+3
は警告が出るとか
色々と恣意的
326デフォルトの名無しさん
2020/04/23(木) 18:27:20.31ID:mq+N4KeF そりゃwarningだもの
コンパイラーごとに親切心でやってるだけじゃん
コンパイラーごとに親切心でやってるだけじゃん
327デフォルトの名無しさん
2020/04/23(木) 18:33:48.11ID:StmE//V5 >>324
自己初期化?
自己初期化?
328デフォルトの名無しさん
2020/04/23(木) 18:34:10.45ID:/EdNitWt 親切心じゃなくて趣味の押し付けみたいな物も多い
329デフォルトの名無しさん
2020/04/23(木) 18:35:02.85ID:HERx4kEF ch = 1;
がどうしてエラーにならないのか、CやC++の古い仕様仕様書からは見つけることが出来なかった。
がどうしてエラーにならないのか、CやC++の古い仕様仕様書からは見つけることが出来なかった。
330デフォルトの名無しさん
2020/04/23(木) 18:35:11.36ID:mq+N4KeF331デフォルトの名無しさん
2020/04/23(木) 18:35:53.67ID:mq+N4KeF >>329
c++が型安全だとなぜ思った?
c++が型安全だとなぜ思った?
332はちみつ餃子 ◆8X2XSCHEME
2020/04/23(木) 20:49:08.20ID:Fyt21a0c >>329
古い仕様っていつのやつ?
とりあえず JISX3010:2003 (C99 に相当) を見る限りでは規定はある。
関連しそうなところを抜粋したので細かいことは周辺を確認してね。
> 6.7.8 初期化
> 型の制限及び型変換は、単純代入と同じとする。
> 6.5.16.1 単純代入
> 右オペランドの値を代入式の型に型変換し、左オペランドで指し示される
> オブジェクトに格納されている値をこの値で置き換える。
> 6.3.1.3
> 整数型の値を _Bool 型以外の他の整数型に変換する場合、
> その値が新しい型で表現可能なとき、値は変化しない。
> 新しい型で表現できない場合、新しい型が符号無し整数型であれば、
> 新しい型で表現しうる最大の数に 1 加えた数を加えることまたは
> 減じることを、新しい型の範囲に入るまで繰り返すことによって得られる
> 値に変換する。
> そうでない場合、すなわち、新しい型が符号付き整数型であって、
> 値がその型で表現できない場合は、結果が処理系定義の値となるか、
> 又は処理系定義のシグナルを生成するかのいずれかとする。
そんなわけで、変換後が unsigned の場合はどんな値に変化するか既定があるし、
signed の場合は表現できる範囲内では値は変化しないから問題ない。
表現できない値になってるかどうかは基本的に実行時までわからんから
コンパイル時には黙って通す (わかるときは警告する) って感じ。
古い仕様っていつのやつ?
とりあえず JISX3010:2003 (C99 に相当) を見る限りでは規定はある。
関連しそうなところを抜粋したので細かいことは周辺を確認してね。
> 6.7.8 初期化
> 型の制限及び型変換は、単純代入と同じとする。
> 6.5.16.1 単純代入
> 右オペランドの値を代入式の型に型変換し、左オペランドで指し示される
> オブジェクトに格納されている値をこの値で置き換える。
> 6.3.1.3
> 整数型の値を _Bool 型以外の他の整数型に変換する場合、
> その値が新しい型で表現可能なとき、値は変化しない。
> 新しい型で表現できない場合、新しい型が符号無し整数型であれば、
> 新しい型で表現しうる最大の数に 1 加えた数を加えることまたは
> 減じることを、新しい型の範囲に入るまで繰り返すことによって得られる
> 値に変換する。
> そうでない場合、すなわち、新しい型が符号付き整数型であって、
> 値がその型で表現できない場合は、結果が処理系定義の値となるか、
> 又は処理系定義のシグナルを生成するかのいずれかとする。
そんなわけで、変換後が unsigned の場合はどんな値に変化するか既定があるし、
signed の場合は表現できる範囲内では値は変化しないから問題ない。
表現できない値になってるかどうかは基本的に実行時までわからんから
コンパイル時には黙って通す (わかるときは警告する) って感じ。
333デフォルトの名無しさん
2020/04/24(金) 02:20:09.80ID:UPXGgu7R >>332
> 右オペランドの値を代入式の型に型変換し、左オペランドで指し示される
> オブジェクトに格納されている値をこの値で置き換える。
C++において、
char ch;
int i;
に対し、
ch = i;
はエラーになるけど、それは左辺と右辺で型が違っているから。
つまり、C++では、単純代入演算子 x = y において、「型変換」は自動的には行われない。
> 右オペランドの値を代入式の型に型変換し、左オペランドで指し示される
> オブジェクトに格納されている値をこの値で置き換える。
C++において、
char ch;
int i;
に対し、
ch = i;
はエラーになるけど、それは左辺と右辺で型が違っているから。
つまり、C++では、単純代入演算子 x = y において、「型変換」は自動的には行われない。
334デフォルトの名無しさん
2020/04/24(金) 02:23:37.80ID:UPXGgu7R >>333
pure Cにおいても、
int x;
char *ptr;
x = ptr;
や
int *pInt;
char *ptr;
pInt = ptr;
は
どちらもエラーになる。
だから、pure C の代入演算子に置いても、型変換がエラーも出ずに自動的に行われるわけではない。
pure Cにおいても、
int x;
char *ptr;
x = ptr;
や
int *pInt;
char *ptr;
pInt = ptr;
は
どちらもエラーになる。
だから、pure C の代入演算子に置いても、型変換がエラーも出ずに自動的に行われるわけではない。
335デフォルトの名無しさん
2020/04/24(金) 05:55:11.40ID:UB0Nvahs336デフォルトの名無しさん
2020/04/24(金) 07:54:02.46ID:Sh3Vy8vg >>333
なんでそんな自信満々なん?これコンパイル通るぞ
int main(){
char ch = 0;
int i = 1;
ch = i;
std::cout << +ch << std::endl;
return 0;
}
なんでそんな自信満々なん?これコンパイル通るぞ
int main(){
char ch = 0;
int i = 1;
ch = i;
std::cout << +ch << std::endl;
return 0;
}
337デフォルトの名無しさん
2020/04/24(金) 10:31:54.61ID:FFBNt2WC unsigned char のときだな
338はちみつ餃子 ◆8X2XSCHEME
2020/04/24(金) 10:33:37.57ID:/uuSllCQ >>333
初期化・代入のどちらにおいても int から char へは暗黙に型変換される。
https://timsong-cpp.github.io/cppwp/n3337/expr.ass#3
https://timsong-cpp.github.io/cppwp/n3337/dcl.init#16.8
https://timsong-cpp.github.io/cppwp/n3337/conv.integral
初期化・代入のどちらにおいても int から char へは暗黙に型変換される。
https://timsong-cpp.github.io/cppwp/n3337/expr.ass#3
https://timsong-cpp.github.io/cppwp/n3337/dcl.init#16.8
https://timsong-cpp.github.io/cppwp/n3337/conv.integral
339デフォルトの名無しさん
2020/04/24(金) 11:53:55.91ID:VnmHvJrT エラーじゃなくてワーニングなんだろ多分
しっかりラーニングしておけよ
しっかりラーニングしておけよ
340デフォルトの名無しさん
2020/04/24(金) 11:59:13.94ID:X9QPCPhF c++は型安全おじさん誕生
341デフォルトの名無しさん
2020/04/24(金) 12:36:28.71ID:TokoipqW 今月のインターフェースでC++は型なし言語と紹介されていた。
種なしって言われたみたいで悲しい…
種なしって言われたみたいで悲しい…
342デフォルトの名無しさん
2020/04/24(金) 14:00:39.93ID:om9P6Ux9 型があることにも、ないことにもできるのがC/C++の良いところ
まあしかし世の中には反りの合わない人がいるもので
そういうところを酷評する意見も当然出てくる
まあしかし世の中には反りの合わない人がいるもので
そういうところを酷評する意見も当然出てくる
343デフォルトの名無しさん
2020/04/24(金) 14:05:22.39ID:A9aEYiqd c++が悪いんやない!cの型システムが壊れてるからや!
みたいな主張は聞いたことある。
まあしかし互換性がウリですからね。。
みたいな主張は聞いたことある。
まあしかし互換性がウリですからね。。
344デフォルトの名無しさん
2020/04/24(金) 15:11:32.57ID:UPXGgu7R むしろ、型を壊したのは C++ の方だと思うが。
autoとかで。
autoとかで。
345デフォルトの名無しさん
2020/04/24(金) 15:14:13.63ID:UPXGgu7R >>335
C++では、
void *ptr;
CPerson *pPerson;
に対して、
pPerson = ptr;
はエラーになるはず。
だから、C++では
CPerson *pPerson = malloc(sizeof(CPerson));
がエラーになるのだから。
pure Cではならなかったが。
また、
CBase *pBase;
CDerived *pDerived;
に対して、
pDerived = pBase;
もエラーになるはずだ。
C++では、
void *ptr;
CPerson *pPerson;
に対して、
pPerson = ptr;
はエラーになるはず。
だから、C++では
CPerson *pPerson = malloc(sizeof(CPerson));
がエラーになるのだから。
pure Cではならなかったが。
また、
CBase *pBase;
CDerived *pDerived;
に対して、
pDerived = pBase;
もエラーになるはずだ。
346デフォルトの名無しさん
2020/04/24(金) 15:15:40.17ID:UPXGgu7R >>343
何か勘違いしているようだが、人気が有ったのはpure Cの方だからね。
今のC++の人気は、pure Cの人気を引き継いだだけ。
そしてC++が変な拡張を繰り返したからこそ、人気にかげりが見えてきている。
何か勘違いしているようだが、人気が有ったのはpure Cの方だからね。
今のC++の人気は、pure Cの人気を引き継いだだけ。
そしてC++が変な拡張を繰り返したからこそ、人気にかげりが見えてきている。
347デフォルトの名無しさん
2020/04/24(金) 15:16:31.43ID:om9P6Ux9348デフォルトの名無しさん
2020/04/24(金) 15:19:58.74ID:TokoipqW >>346
そのコメント343宛でよいの?
そのコメント343宛でよいの?
349デフォルトの名無しさん
2020/04/24(金) 16:02:04.89ID:3fWjsT92 autoは要らない子
350デフォルトの名無しさん
2020/04/24(金) 16:06:41.58ID:h2kPOcUM auto使ってない人なんて実在するのか?
351デフォルトの名無しさん
2020/04/24(金) 16:22:47.89ID:UPXGgu7R >>341
どう書いてあったか詳しく聞いてみたい。
どう書いてあったか詳しく聞いてみたい。
352デフォルトの名無しさん
2020/04/24(金) 17:35:30.22ID:UB0Nvahs353はちみつ餃子 ◆8X2XSCHEME
2020/04/24(金) 17:42:51.85ID:/uuSllCQ354デフォルトの名無しさん
2020/04/24(金) 18:14:30.78ID:UPXGgu7R >>353
馬鹿ですか?
馬鹿ですか?
355デフォルトの名無しさん
2020/04/24(金) 18:22:23.35ID:JqJmAzM2356デフォルトの名無しさん
2020/04/25(土) 07:51:21.81ID:McBhOj36 >>351
コンパイル時にすべての変数の型が確定しないc++は弱い型付けだから型無し言語に分類だって。
コンパイル時にすべての変数の型が確定しないc++は弱い型付けだから型無し言語に分類だって。
358デフォルトの名無しさん
2020/04/25(土) 11:27:52.58ID:nL0CusKX 5月号のこと?
359デフォルトの名無しさん
2020/04/25(土) 11:29:47.36ID:4nLfPOGM トラ枝?
360デフォルトの名無しさん
2020/04/25(土) 11:29:54.96ID:nL0CusKX361デフォルトの名無しさん
2020/04/25(土) 19:17:45.69ID:45wIze2e アムウェイで地味に成功してた僕が業界の裏側を暴露してみた
https://www.youtube.com/watch?v=98udsqJihkA
年間300万円稼げてたのにアムウェイをやめた理由
https://www.youtube.com/watch?v=-H_dBzeJeUM
【体験談】元DDがAmwayで稼ぐのが難しい理由を解説してみた【元ガチ勢】
https://www.youtube.com/watch?v=SpzJEddQOdE
【借金地獄】マルチ商法で死の淵から生還して得たもの失ったもの【ビジネス論】
https://www.youtube.com/watch?v=UxriU-TOrMY
あの頃アムウェイはじめちゃったきっかけ【元ガチ勢】
https://www.youtube.com/watch?v=H9C4n4pL03U
私がネットワークビジネスを勧めない理由とは?
https://www.youtube.com/watch?v=hQNkcfhzv18
https://www.youtube.com/watch?v=98udsqJihkA
年間300万円稼げてたのにアムウェイをやめた理由
https://www.youtube.com/watch?v=-H_dBzeJeUM
【体験談】元DDがAmwayで稼ぐのが難しい理由を解説してみた【元ガチ勢】
https://www.youtube.com/watch?v=SpzJEddQOdE
【借金地獄】マルチ商法で死の淵から生還して得たもの失ったもの【ビジネス論】
https://www.youtube.com/watch?v=UxriU-TOrMY
あの頃アムウェイはじめちゃったきっかけ【元ガチ勢】
https://www.youtube.com/watch?v=H9C4n4pL03U
私がネットワークビジネスを勧めない理由とは?
https://www.youtube.com/watch?v=hQNkcfhzv18
362デフォルトの名無しさん
2020/04/25(土) 19:26:23.55ID:siKm6MFQ >>361
グロ
グロ
363デフォルトの名無しさん
2020/04/25(土) 19:45:42.98ID:zwQe2okb auto it = unique(
vecVisibilityPolygonPoints.begin(),
vecVisibilityPolygonPoints.end(),
[&](const tuple<float, float, float> &t1, const tuple<float, float, float> &t2)
{
return fabs(get<1>(t1) - get<1>(t2)) < 0.1f && fabs(get<2>(t1) - get<2>(t2)) < 0.1f;
});
vecVisibilityPolygonPoints.resize(distance(vecVisibilityPolygonPoints.begin(), it));
のresize()から意味がよくわからないのですが、
{0.1, 0.11, 0.2, 0.21, 0.4, 0.41}
↓
{0.1, 0.2, 0.4}
なことでしょうか?
vecVisibilityPolygonPoints.begin(),
vecVisibilityPolygonPoints.end(),
[&](const tuple<float, float, float> &t1, const tuple<float, float, float> &t2)
{
return fabs(get<1>(t1) - get<1>(t2)) < 0.1f && fabs(get<2>(t1) - get<2>(t2)) < 0.1f;
});
vecVisibilityPolygonPoints.resize(distance(vecVisibilityPolygonPoints.begin(), it));
のresize()から意味がよくわからないのですが、
{0.1, 0.11, 0.2, 0.21, 0.4, 0.41}
↓
{0.1, 0.2, 0.4}
なことでしょうか?
364デフォルトの名無しさん
2020/04/25(土) 20:03:25.46ID:NvgVRl2l >vecVisibilityPolygonPoints
std::vector<T>のハンガリアン記法での接頭辞vecで良いんだっけ…
Tの情報はどう埋め込めば良いんじゃ…
毎回悩むのでJISか何かで決めてホスイ
std::vector<T>のハンガリアン記法での接頭辞vecで良いんだっけ…
Tの情報はどう埋め込めば良いんじゃ…
毎回悩むのでJISか何かで決めてホスイ
365デフォルトの名無しさん
2020/04/25(土) 20:32:53.50ID:/7S9hKw7 erase使わずにresize使う人始めてみたわ
366デフォルトの名無しさん
2020/04/25(土) 22:11:42.84ID:NvgVRl2l >erase使わずにresize使う人始めてみたわ
ハア?(゚Д゚)ハァ?
ハア?(゚Д゚)ハァ?
367デフォルトの名無しさん
2020/04/25(土) 22:34:29.10ID:siKm6MFQ >>364
vecなんて付けずにvisibilityPolygonPoints でいいんじゃね。システムハンガリアンは不要または有害だと言われるようになって久しいだろう。
処理の都合上、別のコンテナからvectorに詰め替えたとかでvectorであることに強い意味がある状況なら、vecをつけて元の変数と区別する意味はあると思うけど。
vecなんて付けずにvisibilityPolygonPoints でいいんじゃね。システムハンガリアンは不要または有害だと言われるようになって久しいだろう。
処理の都合上、別のコンテナからvectorに詰め替えたとかでvectorであることに強い意味がある状況なら、vecをつけて元の変数と区別する意味はあると思うけど。
368デフォルトの名無しさん
2020/04/25(土) 22:56:50.00ID:WEavO2K3 auto使ってハンガリアンとかなんか間違ってるわな。
369デフォルトの名無しさん
2020/04/25(土) 23:00:45.13ID:/7S9hKw7 確かにvectorだと処理量変わらんな
■ このスレッドは過去ログ倉庫に格納されています
