C++相談室 part139

■ このスレッドは過去ログ倉庫に格納されています
2018/10/06(土) 00:59:48.54ID:CdYUXXMG0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/

このスレもよろしくね。
【初心者歓迎】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
2018/10/10(水) 09:18:24.61ID:Mncb4eyW0
clangの開発って、LLVMのチームに入りたいってこと?
だとするとC++のスキルは世界的な有名人になれるくらい凄腕でないと厳しいだろうな
130デフォルトの名無しさん (ワッチョイ e2d2-pJhu)
垢版 |
2018/10/10(水) 09:46:07.79ID:HW3BEf/50
ん?プルリク送るだけじゃないの
2018/10/10(水) 10:14:02.27ID:T78UR1cm0
日本のC++トップ集団ってどれなの?
2018/10/10(水) 10:29:11.53ID:Mncb4eyW0
手続きの話と、務まるかって話は別だろ
2018/10/10(水) 11:30:32.89ID:2TMLSXoid
C++の世界レベルのスキル。
かっこいいなぁ。
2018/10/10(水) 16:14:19.56ID:Mncb4eyW0
gnuの連中と真っ向やり合って勝とうって話だぜ
少なくとも、おまえらではゴミにすらカウントされんだろ
2018/10/10(水) 17:08:56.41ID:MsVaxrK/0
バグの指摘だとか、
ドキュメントの typo を直すくらいの役にはたてるかもね。

ただ、自分のミス (未定義を踏んだとか) ではなく
コンパイラのバグであると確信をもって主張するには、
規格をかなり把握しておく必要は有るので、
それだけでもなかなか大変だ。
136デフォルトの名無しさん (スプッッ Sdda-YLcB)
垢版 |
2018/10/10(水) 17:33:55.95ID:+jUb1Zszd
ハンガリアン使ってる奴には無理だろうな
137デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/10(水) 18:50:52.92ID:ApxL+L/D0
真のJava scriptがあればいいと思うのだが。
2018/10/10(水) 19:56:55.02ID:TfVezTBt0
至る所に try catch を書かなきゃいけないスクリプト言語か
2018/10/10(水) 20:03:19.96ID:kd4mysCH0
最近Java触ってないんだけど
あの検査例外指定を必ず書かされる糞仕様はまだ残ってるの?
2018/10/10(水) 20:57:53.79ID:1d6HAJSZ0
>>135
どっかの日本人が規格書だけ必死に読んでる間に
世界のプログラマは言語気にせずに必要なアプリ作ってるけどね。
そういうとこだよ。
2018/10/10(水) 21:24:35.61ID:r0MKwZEq0
>>135
コンパイラのバグ報告くらいなら、別に規格理解してなくても
ググったりメジャーなコンパイラで動作比較したらわかるけどな

さすがにコンパイラの開発に携わるなら規格読まないとダメだろうけど
2018/10/10(水) 22:41:09.57ID:MsVaxrK/0
より詳しい人が精査するという前提でとにかく目を増やす、
おおざっぱでもバグを発見する目になるというのも悪いわけじゃないしな。
開発メンバーが少ないならそういう雑多な情報は嫌がられることもあるかもしれんが、
CLANG 級のソフトならそれなりにきちんとした開発体制は出来てるだろう。
2018/10/11(木) 08:11:33.98ID:2jR4X2Zc0
バグ探しとかそういうレベルじゃなく
今なら並列に重きを置く最適化とかが勝負だろうが
2018/10/11(木) 09:29:29.42ID:WBThZCRQ0
>>128は開発に携わりたいと言ってるのに、一人が無理と言い出し、多数バグ探ししか無理と言い
誰もアドバイス出来てないところが面白い
2018/10/11(木) 09:49:26.64ID:RY8aHP4O0
結局のところ、マウント取りたいだけなのよね
2018/10/11(木) 11:10:54.68ID:dKSczptfd
会社にもそういうやつの多いこと多いこと…
2018/10/11(木) 11:39:55.98ID:2jR4X2Zc0
ム板で返す言葉に事欠いて人格批判か
会社にも、論文に人情論を書くようなアホはさすがに少ないな
2018/10/11(木) 13:36:17.85ID:PBtwUpWj0
>>144
本人が簡単ではないと思ってるから、 (割とハードルが低く) 出来ることもあるとアドバイスされている。
2018/10/11(木) 15:41:08.81ID:WBThZCRQ0
>>148
まあ新型のゲーム機のバグを見つけてネットで大騒ぎするというアドバイスは、本人は望んでなさそうだけどな
2018/10/11(木) 16:14:12.43ID:AkyZHzlY0
何言ってんだこいつ
俺は>>128への直接の回答じゃないけど、単にコンパイラのバグ報告ってそんな敷居の高いものではないよ、と
言っておきたかっただけなんだが
2018/10/11(木) 17:25:23.27ID:2jR4X2Zc0
話の腰を折るようで悪いが
128が言っているのがclang自体の開発かどうか
まだ仮定なんだが
2018/10/12(金) 01:44:46.58ID:/I0EFebir
スマートポインタの中身ぶち壊して他のアドレス与えて使いますことってできる?
2018/10/12(金) 04:03:45.88ID:EXEDaiYK0
C++言語でok
てかそれ単に代入すりゃいいんじゃないの
reset でもいいけど

unique_ptr
https://stackoverflow.com/questions/37806616/reassign-unique-ptr-object-with-make-unique-statements-memory-leak

shared_ptr
https://stackoverflow.com/questions/31438714/stdshared-ptr-reset-vs-assignment
2018/10/12(金) 04:25:48.47ID:/I0EFebir
>>153
代入したら、元の生ポインタはいつ消えるの?
2018/10/12(金) 05:16:36.75ID:Q8TQ4FMY0
>>144
> 一人が無理と言い出し
まあ務まるような奴ならこんなところで質問しない
156デフォルトの名無しさん (ブーイモ MMcf-NsMu)
垢版 |
2018/10/12(金) 05:17:14.20ID:1iFt3dhJM
scopeから出たら消える
2018/10/12(金) 05:40:31.89ID:ZYTXH3K/d
>>154
「消える」って言葉で何を意味してるのかがわからない
ポインタは消したりできるものではない

ポインタが指している先のインスタンスがデストラクトされるってことなら、
代入なりresetなりした時に前のをdeleteする必要があればdeleteされる

foo * p = new foo;
unique_ptr<foo> q(p);

みたいなときに q に何かして p に nullptr が入って欲しいならそれは無理
2018/10/12(金) 06:06:36.57ID:U+Po+Cgl0
>>154
https://ideone.com/UjRAh1
2018/10/12(金) 16:26:55.42ID:KckWK6Wl0
最近、gccを8.2にアップグレードしたのですが、
行列ライブラリGLMの最新版を使おうとすると、
std::log2他幾つかの数学関数(cmath)が未宣言とか言われてエラーがでます。
#代わりに::log2を使えとも
ネットを調べてみると、
「log2等はC99以降の追加なのでstd名前空間には入らない」
等のコメントが見つかったのですが、
ここら辺の真偽について教えてください。

仕様的な真偽以外にも、
1. 他のOSのg++8.2以上でも(自宅はFreeBSD10.0)でも同じなのか?
2. コンパイラオプション等で制御する方法はあるのか?

についても情報を求めています。
2018/10/12(金) 16:33:39.71ID:KckWK6Wl0
追記:
-std=c++11でも-std=c++17でもダメでした。何故?
2018/10/12(金) 20:11:37.97ID:ic9zmoqmr
>>157-158
ありがとうございます
勉強します
2018/10/12(金) 20:50:53.44ID:aBKT1Xur0
namespace std{
#include <math.h>
}
2018/10/12(金) 21:26:30.53ID:v3EBhOgT0
>>159
言語仕様的には C++11 で std::log2 は追加された。
なので、 C++11 以降なら cmath を include していれば std::log2 を使うことは出来る。

C++ は C が提供する関数は基本的に使えることになっていて、それらは std 名前空間に属するが、
C++03 の時点で想定していた C は C90 のこと。 なので、 C++03 には log2 は無かった。
ただ、環境に C99 用の math.h があればそれを include すれば (C++03 の仕様には無いが) std 名前空間に属しない関数として使えていた。
2018/10/12(金) 23:30:34.87ID:1VvBVVcs0
>SCHEME
こりゃお見それしました
2018/10/13(土) 14:24:29.26ID:EibBUXfA0
>>163
ふむ。ネットで調べた上での仕様的な解釈はだいたい正しかったみたいですね。

gcc 8.2.0で-std=c++11以降つけても使えないのは単なるバグなのか機種依存なのか……
2018/10/13(土) 18:50:17.42ID:F7qz0ZHX0
>>165
どっち?

- GLM を使おうとするプログラムで std::log2 が未宣言というエラーになる
- cmath を include したどんなプログラムでも std::log2 を使えない
2018/10/14(日) 00:07:05.78ID:IgMlyec50
>>165
gcc -std=c++11 -pedantic かも
2018/10/14(日) 00:28:07.68ID:rMQ7HlNZ0
-pedantic は拡張機能を無効にするオプションなので、
紛うことなき C++11 の機能である std::log2 に影響しそうにないと思うけど……。
169デフォルトの名無しさん (ワッチョイ 67b3-JlWZ)
垢版 |
2018/10/14(日) 01:19:47.45ID:k35qB8Cf0
gccがバグってる派と規格がバグってる派の争いが勃発するのでは。
2018/10/14(日) 06:17:49.56ID:1QMkRc1k0
今のgccは-std=c++14がデフォだろ
7.0以後だっけ
2018/10/14(日) 09:57:28.32ID:JAcCHmYY0
江添亮はなんて言ってる?
2018/10/14(日) 10:06:18.57ID:wo9o1/Qh0
奴はお前のお母さんじゃないぞ
2018/10/14(日) 10:10:08.01ID:muYkF5p70
江添さんって規格を変えられるほどの発言権あるの?
2018/10/14(日) 10:14:36.46ID:wo9o1/Qh0
一応ISOへ意見を言う機関(日本NB)で意見する権利くらいは持ってるんじゃないの
2018/10/14(日) 10:16:58.23ID:1QMkRc1k0
range-based forでADLが効くことにすべきか否か
不特定多数に意見を請うてたな

奴は反対に傾いていたようで
俺とは見解を異にしていた
2018/10/14(日) 10:50:05.94ID:muYkF5p70
そうなのか。
江添さんもすごいけど、このスレの人もすごいね。
177デフォルトの名無しさん (ワッチョイ 277f-4Hut)
垢版 |
2018/10/14(日) 11:47:14.18ID:xrZwnrIj0
俺も江添とは見解が異なるわ
どちらかというとビョーンの見解に近い
2018/10/14(日) 12:37:47.83ID:rMQ7HlNZ0
>>175
へー。 ADL が使えないのなら、
std::begin と std::end の特殊化でやるってこと?
2018/10/14(日) 13:43:56.98ID:S1kOckUF0
特殊化ってなんだ
ここで聞くよりググれよ、すぐ見つかるぞ
2018/10/14(日) 14:46:41.69ID:iHlUkB5I0
実際に発言権持ってるのってビャーネとGCCとかLLVMとかclingとかの中の人とその他お金出してる企業くらいだろ
2018/10/14(日) 15:17:03.44ID:rMQ7HlNZ0
江添氏はメンバ関数のみを対象にする案を推してたのね。
https://cpplover.blogspot.com/2011/02/range-based-for.html
2018/10/14(日) 16:32:31.63ID:izrX1EIe0
>>166
宅環境で後者。

FreeBSD以外でgcc8.2使ってる人だれかいませんかね?
2018/10/14(日) 18:03:31.93ID:rMQ7HlNZ0
>>182
https://wandbox.org/permlink/N7ZxNx76GMs332sk
2018/10/14(日) 19:57:55.19ID:rMQ7HlNZ0
>>182
念のために確認するけど、コンパイル時のコマンドは g++ だよね?
たぶん >>159 の書きぶりからすると、ちゃんと出来てるとは思うんだけど。

gcc コマンドに -std=c++11 を付けると C++ としてコンパイルはしてくれるけど、
サーチパスが gcc と g++ では違ったりすることもあるから、
ヘッダファイルを見つけられないとか標準ライブラリのリンクに失敗するとかいうことはある。

でも、ヘッダファイルが見つからないんじゃなくて、
ヘッダファイル中にあるはずの宣言がされてないっていうのがよくわかんないね。
実際に cmath の中身を辿ってみるしかないんじゃない?
185デフォルトの名無しさん (ブーイモ MMcf-NsMu)
垢版 |
2018/10/14(日) 21:17:29.63ID:WLfX4fFSM
cmathはM_PIが未定義とか言われてハマったことはあるな
186デフォルトの名無しさん (ブーイモ MMcf-NsMu)
垢版 |
2018/10/14(日) 21:20:39.47ID:WLfX4fFSM
これだな
#define _USE_MATH_DEFINES
2018/10/14(日) 21:51:25.46ID:cnUSrnZ50
めんどくセーからdockerでも使ってメジャーな環境でやればいい。
2018/10/14(日) 22:16:35.02ID:1QMkRc1k0
数学定数は標準に欲しいが言い出すとキリないからなあ
2018/10/14(日) 22:43:26.50ID:wo9o1/Qh0
でもπとeくらいは用意しとけよ標準
2018/10/14(日) 22:54:22.32ID:iHlUkB5I0
MSVCのかつてのマクロでひどい目に会ってるから定数を用意していなくて正解
2018/10/14(日) 23:18:09.29ID:r1bPQqR/a
min,maxの事だな。

マクロじゃなければいいんだろうということでstd名前空間にconstexpr変数ならどうだろう?
2018/10/15(月) 10:38:16.29ID:FjE86ied0
smallも定義されてた
193デフォルトの名無しさん (ワッチョイ 2723-NsMu)
垢版 |
2018/10/15(月) 10:42:34.46ID:/DZZgAIK0
extern(C){
}
みたいに
#defineとかならまとめて
namespace HOGE {
}
に入れてしまえれば良かった
2018/10/15(月) 12:12:04.88ID:EhepTNcp0
環境依存問題でしたが一応解決しましたので、軽く報告。

<cmath>内で
#ifdef _GLIBCXX_USE_C99_MATH_TR1
以下で囲まれた部分がばっさり切られていたので
/環境依存パス/bits/c++config.hを調べてみると、
#undefされていたのが直接の原因。

#defien ... 1
に書き換えてみたところ、
今度は<cmath>内の
using ::tgammal;他4行がエラーになりましたが、
どうもFreeBSDの<math.h>にはその4関数がない模様。
#tgammafとか引数違いの類似物はある
結局その4行をコメントアウトすることでコンパイルを通すことに成功しました。
GLM最新版も使えたのでOKです。

まあ思うところはありますが、
gcc派 vs 規格派 vs マイナーOS派の話になりそうなので解決とします。
2018/10/15(月) 12:50:55.56ID:A4+xGAqjM
#include <tr1/cmath>
だったら使えたのかな?
2018/10/15(月) 13:30:53.01ID:rnCB9VMH0
>>194
それは環境依存というよりそのあたりのパッケージを管理してるメンテナの手が回ってない感じでは……。
Linux に比べると BSD 系はだいぶん人口が少ないらしいし、そういうことも致し方ないのやもしれぬ。
2018/10/15(月) 14:31:54.20ID:7k7Dj2O30
g++ -std=c++17は試したか?
tr1だった関数がstd直下に来てるぞ
198デフォルトの名無しさん (ワッチョイ ff8b-CE2c)
垢版 |
2018/10/15(月) 16:08:03.29ID:FzvdOK9e0
ドラクエ10プレイヤーからの質問。

死んでいるのに動けてしまう『死亡ラグ』
http://egg.5ch.net/test/read.cgi/dqo/1539560522/

改善の余地があると思えますか?
199デフォルトの名無しさん (バットンキン MMbf-CE2c)
垢版 |
2018/10/15(月) 16:26:28.74ID:tvJDbt95M
ドラゴンクエスト10の下請けプログラマーはC/C++の名人ばかりですよ?
2018/10/15(月) 16:28:24.70ID:/mdlwLZy0
>>198
猫耳猫オンラインを目指しているのでしょう
201デフォルトの名無しさん (バットンキン MMbf-CE2c)
垢版 |
2018/10/15(月) 16:44:25.17ID:tvJDbt95M
友人がドラクエ10プログラマーなんだけど、C/C++については何でも彼に聞くようにしている。
2018/10/15(月) 17:23:10.52ID:EhepTNcp0
>>196
書いてませんでしたけど、パッケージじゃなくて全部ソースから./confugre以下ビルドして入れてます。
まあそのconfigureが「4関数足りないから切っちまえ」と判断した本人ですが。
2018/10/15(月) 21:14:12.69ID:E6pr56BO0
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
204デフォルトの名無しさん (ワッチョイ dff7-1yL/)
垢版 |
2018/10/16(火) 05:10:47.74ID:2DZhjJ9l0
C++がオワコンってマ?
Cの次に C++→C#→ほかの言語 の順番で勉強しようと思ってたんやが・・・
せっかく脱ニートしようと思ったのに水差された気分やわ
寝るわクソが
2018/10/16(火) 08:02:21.90ID:oqEWuMcG0
20年前からオワコンと言われ続けてるからオワコンが嫌いならやめた方がいいよ
2018/10/16(火) 08:05:29.93ID:7CCe71Wvr
C++11 以降、いろんな可能性があるように思えてきた
2018/10/16(火) 08:22:47.24ID:RwiWe9L4M
ちな昨日のニュース記事。
http://egg.5ch.net/test/read.cgi/bizplus/1539603497/
C++erも困惑の結果。
2018/10/16(火) 08:31:56.14ID:ChMhlbB0d
C++11以降は神
209デフォルトの名無しさん (ワッチョイ dff7-6Dpv)
垢版 |
2018/10/16(火) 08:39:41.73ID:2DZhjJ9l0
神なんやな
よし次はC++やるわ
ありがとな
2018/10/16(火) 09:38:01.41ID:VHaobsT+0
C++やるとか何プログラマーになるきよ。
つか、言語増やせばいいってもんじゃねぇぞ
2018/10/16(火) 09:47:44.01ID:VHaobsT+H
まぁC++はちょっと別格にうざいけど、言語だけ増やしても役立たずの烙印だぞ。そんな言語増やすことに一生懸命になることより一つアプリ作れるほうが重要だわ。
だから、例えばJavaを使ってandroidアプリ開発できるとか。
要は言語以外にクラスライブラリやUIフレームワークの知識や経験を身に付けることに一生懸命頑張ったほうがいいと思う。
2018/10/16(火) 10:39:57.45ID:kKW6G61E0
>>208
神は全盛時までのCだろ
無駄のない細マッチョ

思いつきでゴテゴテ重装備するC++やC99以後はそうじゃない
C++11はそれまでを反省はしてるけど重装備指向は変わってない
2018/10/16(火) 10:40:14.59ID:rifs1aEYa
オワコンだとか安易な神だとか、そういう子供っぽい発送だとどうせすぐに飽きてやめるんじゃないかと思えてくる。
214デフォルトの名無しさん (ワッチョイ dff7-6Dpv)
垢版 |
2018/10/16(火) 10:55:42.15ID:2DZhjJ9l0
大丈夫やで
まず覚悟があるんや
ワイは死ぬまで趣味に生きると決めとるんや
それに動機もあるで
Android NDKでC++でもAndroidアプリ作れると聞いとるからな
ほんで一攫千金の大逆転や
2018/10/16(火) 11:13:47.50ID:OaARVILoM
いいかみんな、どんな新規格を使って作るかが目的じゃないぜ?

まあ使いたくなるんだけどね
216デフォルトの名無しさん (アウウィフ FFeb-NsMu)
垢版 |
2018/10/16(火) 11:56:04.30ID:YLHbxnbGF
>>206
せやな
217デフォルトの名無しさん (アウウィフ FFeb-NsMu)
垢版 |
2018/10/16(火) 11:57:59.03ID:YLHbxnbGF
>>212
装備にこだわってる人が多いみたいだけど
エラーメッセージをもっと判りやすくするべき
2018/10/16(火) 13:21:59.25ID:DXK1BkAG0
>>215
新しい機能はそれを使った方が良くなる (場合もある) から追加してるわけだし、
どういうときに便利なのかに慣れるためには最初は過剰なくらいに使ってみてもいいと思うけどね。
いきなり本格的に導入する前に実験的なプロジェクトで試すくらいはした方がいいかもしれんが。
2018/10/16(火) 13:45:02.82ID:DjFJv3DN0
以前は完全にbetter Cとしてしか見ていなかったが、STLとかBoostを積極的に使うようになってから面白くなってきた
2018/10/16(火) 14:05:38.44ID:ChMhlbB0d
「うちはSTL禁止」と言われて辞めたくなったw
2018/10/16(火) 14:18:14.23ID:OaARVILoM
>>220
稀によくあるw
理由は「他のメンバーが読めないから」w
222デフォルトの名無しさん (アウウィフ FFeb-NsMu)
垢版 |
2018/10/16(火) 14:39:57.19ID:YLHbxnbGF
BOOST禁止は見かけるけどSTL禁止はひどいな
2018/10/16(火) 14:45:06.11ID:GbK/byr70
いやまて、その真意は動的メモリ割り当てを減らしたい、かもしれんぞ
2018/10/16(火) 15:10:13.15ID:RUqX36lE0
言語増やせばいいってもんじゃないけど、プロのプログラマなら一通りどの言語も少なくともアマよりは使いこなせるでしょ
225デフォルトの名無しさん (アウウィフ FFeb-NsMu)
垢版 |
2018/10/16(火) 16:24:19.15ID:YLHbxnbGF
必要なのは言語の多寡ではない
CS(Customer Satisfaction ではないぞ)への理解
2018/10/16(火) 16:25:43.12ID:AEURreP/p
標準ヒープ禁止ならSTL禁止にはなりうるだろうな
アロケータ指定すりゃいいけど結構不便だし
2018/10/16(火) 16:42:01.42ID:DXK1BkAG0
何が STL なのかっていうのは意見が分かれる部分もあるからなぁ。
便宜的に STL と呼ばれているものは仕様的には完全に C++ の一部で、
他の規定と区別するものは何もない。

Wikipedia にも簡単な歴史が書かれてるけど、
https://ja.wikipedia.org/wiki/Standard_Template_Library#%E6%AD%B4%E5%8F%B2
ここには「stringのようなその他のC++標準ライブラリの機能にも影響を与え」
とあり、 string 自体は STL ではないかのようにも読める。
でも、 string が STL の一部かというとだいたいの人は STL だと思ってるだろうし。

他の人が読めないからっていうのが理由ならテンプレート自体がもうダメってことなんかな。
2018/10/16(火) 17:03:12.74ID:AEURreP/p
STLってあくまで俗称やろ、定義は曖昧
俺も「読めないからテンプレート使わないでくれ」と言われたことはあるなぁ
PC向けなんだしSTLくらいは我慢してもらったけど

でも世の中標準のヒープ自体使っちゃいけない業種、結構あるやろ
コンシューマゲーム機も大抵そうやで
アロケータ渡せばいいって言われるだろうけど正直不便
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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