【初心者歓迎】C/C++室 Ver.105【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
2019/12/20(金) 17:42:09.99ID:mI5I/WU7
>>396
ありがとうございます
楽なのは事実だし、そこよりもまずは中身がまともに使えなきゃ無意味でしたね
398デフォルトの名無しさん
垢版 |
2019/12/20(金) 17:47:54.25ID:VlcbOuJw
Java で import *;
2019/12/20(金) 18:50:13.84ID:smtL92ik
>>395
意味がわかってるならやりたいようにやっていいよ。
「プラグラマがやりたいことをさまたげない」という意味のことは D&E に書いてある。
言語仕様としてはさまたげないという意味なのでやった結果がクソになっても自己責任だけど。
そのあたりは言語仕様がどうこうよりも設計の話になるんじゃないかなぁ。

まあまずは言語を理解しないことにはどうにもならんので、
いい感じの作法は後回しでもいいでしょ。
(そういってずっと後回しにし続けるのはよくある話なのでちゃんと計画を立てて学習しような!)
2019/12/20(金) 20:36:03.32ID:PIQAyvT8
はちみつが江添を腐すのは意外だな
2019/12/21(土) 01:13:26.24ID:hBrPM7yJ
>>400
俺は >>399 で江添氏による C++ 入門書については何も言ってないよ。
「作法は後回しにして言語 (C++) の入門書を読め」ってだけ。

言語の入門書っていうのは特に限定しないけど、江添氏のでも別にいいんじゃね。
俺は読んだことないから知らんけど。
2019/12/21(土) 21:42:45.92ID:r9u4FEpO
>>401
正にその入門の本探しで迷宮入りしてるところに、江添氏の本を見たので、そういうのもありなのかと思っての質問でした
作法にこだわって肝心な部分を落としてたら意味がない(作法を無視して良いというわけではなく)のは確かなので、本読み手を動かしていきます
アドバイスありがとうございます
2019/12/21(土) 21:53:38.39ID:Pmk2U2LB
別にそこまで言語文法と作法がバッティングするわけでもないし、両方やったらいいとしか言いようがない。
何を心配してるんだか。
2019/12/21(土) 22:06:25.82ID:/C2Zxfa9
カネの心配だろ
どの本がいいか=どれを買えばいいか だ
2019/12/22(日) 16:56:47.47ID:0CTeJT4Z
だいたいの作法にはそれなりの理由があるけど、
言語を理解せずに作法を学んでもただそうするということだけが頭に残って教条的になりやすい気がするんだよね。
完璧に言語を理解する必要はないけどほどほどには理解してから作法に入った方が良くない?
2019/12/22(日) 17:17:17.16ID:x1zpVDy3
質問者は江添の示す作法に疑問を持ってんだからその理屈はおかしい
2019/12/22(日) 17:30:35.07ID:WxFIsXHD
とりあえずこうする!じゃなくて
自分が納得して辿りついた方法はこれ
の方がいいよね
2019/12/22(日) 18:00:49.87ID:0CTeJT4Z
>>406
あ〜〜そゆことか。 江添本でやってるわけね。
https://ezoeryou.github.io/cpp-intro/#%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%9C%81%E7%95%A5
その前提をわかってなかった。 すまぬ。

わかってる人からするとこれは説明の便宜のためであって作法を示すものではないことがわかるけど、
入門書の冒頭でやっちゃうのは思い切りが良すぎるな。
409デフォルトの名無しさん
垢版 |
2019/12/23(月) 12:35:08.34ID:sEnpgkKc
禿添を擁護する気は無いが
そもそも他の入門書だって
#include はおまじないとか言って
お茶を濁してるレベルなのを考えれば
(見た目のインパクトは知ってる人が見てそう思うだけで)
初心者には大した違いは無い
2019/12/23(月) 17:22:38.49ID:cv9cp49U
思い切りがいいのはgotoの説明があるところダゾ
2019/12/23(月) 17:31:52.28ID:7PnpYzan
goto否定は時代遅れ
2019/12/23(月) 17:56:04.90ID:yUC4LEa+
肯定するもんではない
2019/12/23(月) 18:23:13.68ID:FZMFlrDL
gotoの是非ではなくスパゲッティコードの是非
2019/12/23(月) 20:32:41.60ID:JFzkr+Zj
gotoアレルギーは悪
多様も悪
2019/12/23(月) 20:38:42.86ID:Dm8g2GT6
gotoが悪とか言ってるやつの脳は
武器があるから戦争がおこるんだ!
っていうパヨク脳と同じ構造
2019/12/23(月) 21:29:45.76ID:kZpvALBe
>>413
スパゲッティは困るのが本人限定でない限りは非でいいだろう。問題はgotoのどんな使い方までがスパゲッティにならないかだけど合意を得られる共通認識はないから、組織のルールに合わせるくらいしかないかも。
2019/12/23(月) 23:14:04.93ID:VCFgqBQo
深いところからの抜け出しはわかる
飛び込みは……ヤバイ
418デフォルトの名無しさん
垢版 |
2019/12/23(月) 23:42:38.10ID:qDrReXNq
プロは使うぞ goto
419デフォルトの名無しさん
垢版 |
2019/12/24(火) 01:18:53.63ID:qpZ25SUC
switchとgoto組み合わせてステートマシン作るのよくやってる。
2019/12/24(火) 03:33:33.92ID:4c9jV6+e
何重にもネストしたforの真っ只中にぶっこんでくgotoとかじゃない限り
そこまで可読性が悪くなるってことはないかな。
2019/12/24(火) 06:58:18.67ID:cUFUrp77
gotoネタまだやってんのか
初心者に使い方を教えれば終わりだよ
2019/12/24(火) 18:02:52.32ID:Kb/HLSFP
所詮 goto は関数内でジャンプするだけだから、たいしたスパゲッティにはならないのでは?
むしろ setjmp()/longjmp() 大好き人間のほうが怖い…
2019/12/24(火) 18:36:41.63ID:HGX5RVNB
>>422
そんな奴はおらん。
424デフォルトの名無しさん
垢版 |
2019/12/24(火) 18:39:15.66ID:IBUEMR4t
setjmp/longjmpって具体的に使われてるプロジェクト今ある?
2019/12/24(火) 18:49:21.37ID:4kM/Vj6H
>>424
JPEGライブラリで使われてるよ。
426デフォルトの名無しさん
垢版 |
2019/12/25(水) 16:23:59.62ID:Jr8g24A7
bool readShaderSource(const char *name,std::vector<GLchar> &buffer){
//ファイルなし
if(name == NULL) return false;

//ソースファイルを開く
std::ifstream file(name,std::ios::binary);
if(file.fail()){
//開けなかった場合
std::cerr << "Error: Can't open source file: " << name << std::endl;
return false;
}

// 以下読み込み部分の為省略
}

Macでこんな感じのコードを書いてるのですが、実行ファイルをターミナルから
相対パスで実行すると成功し、Finderからダブルクリックすると別ウィンドウのターミナルが出て

Last login: ~~
$[実行ファイルの絶対パス] ; exit;
"Can't open Source File [ファイル名]"と出てしまいます。

絶対パスと相対パスでファイル読み込みの挙動が変わるのでしょうか?
調べてもそれっぽい情報が出てこず……もし思い当たる方がいたらお願いします。
ちなみに読み込みファイルはOpenGLのShaderです。
2019/12/25(水) 16:34:37.25ID:TfD43SqC
カレントディレクトリでググって。
2019/12/25(水) 16:34:37.50ID:ZI663GBY
まず、端末とFinder は、異なる!

Windows のExplorer で言えば、拡張子に対して、開くアプリが関連付けられている。
漏れの場合、.txt なら、TeraPad で開く

関連付けられていないと、どのアプリで開きますか? と聞いてくる
2019/12/25(水) 20:11:17.23ID:Jr8g24A7
>>427
すみません、言われたことをよく考えたら重要な説明抜けてました
mainの中で先ほどの関数が使われるのは、
const GLuint program(loadProgram("point.vert","point.frag"));
という部分であり、ここで読み込まれている
GLuint loadProgram(const char *vert,const char *frag))
の内部に先ほどのコードがあります。
上の"point.vert"と"point.frag"を"./point.vert"、"./point.frag"に変えたりしましたがダメでした。
/User/~~~ による絶対指定なら動いたのですが、それだと別ファイルに移動した時使えなくなるので
ファイルの階層などを変えても動くようにしたいです。

>>428
とりあえずfileコマンドの結果は
Cのソースファイル(main.cpp): c program text, UTF-8 Unicode text
同ファイル内から読み込んでいるヘッダ(Matrix.hなど): C++ source text, UTF-8 Unicode text
読み込んでいるシェーダーファイル(上記の返答レスの二つ): c program text, ASCII text
実行ファイル: Mach-O 64-bit executable x86_64
dSYMファイル(実行と同時に生成された): directory(IOSの情報ファイル)
という感じです。
実行ファイルなので開くアプリはデフォでterminal、他はバイナリエディタで開けます。
2019/12/25(水) 20:28:55.00ID:KX6i+Zbe
>>429
カレントディレクトリの概念は分かったの?
プログラムを何らかの方法で起動したときに、そのプログラムはどこかのディレクトリを「現在位置」として処理を行う。
だからプログラム中でファイルを指定するときに絶対パスではない書き方、つまり相対パス(point.vertや./point.vertという書き方)で指定すると、それは現在位置から見てその名前の場所にあるファイルを指す。
macの環境は詳しくないけど、terminalから実行したならカレントディレクトリはterminal上のカレントディレクトリだろうし、finderから実行したらプログラムの実行ファイルがある場所だろう。
そこと、開きたいファイルの位置関係を確認して、適切な相対パスを指定してみて。
2019/12/25(水) 20:45:23.56ID:ZI663GBY
>>429
loadProgram と言う名前から想像すると、
特定のディレクトリだけから、ファイルを探すとか?
カレントディレクトリ内からは、探さないとか?

絶対パスなら読めるのなら、絶対パスへ変換すれば?

例えば、ruby -e 'puts $:'
と、Ruby でライブラリの探索パス・ロードパスを表示すると、
その中に、カレントディレクトリは入っていない

他には、エラーの前後で、カレントディレクトリがどこにあるか、確認すれば?
2019/12/25(水) 20:48:27.13ID:88EUoeVm
まず相対パスを絶対パスに変換してどうなるか確認したらいいんでないの
2019/12/25(水) 21:06:23.06ID:KX6i+Zbe
>>430
質問者はC++のifstreamで目的のファイルを開くと言ってるだろ。
的外れなことを言って混乱させるのはやめれ。
2019/12/25(水) 21:07:02.85ID:KX6i+Zbe
上のレスは>>431宛だった
2019/12/25(水) 22:03:46.49ID:R9J1PIns
iOSのシミュレータで実行するアプリ??(IOSとか書いてるから
それだったらfstreamには絶対パスを渡すしかなかったはず
あんま自信ないので違ってたらすまん
2019/12/25(水) 22:09:17.12ID:ulJiubw3
ほんとruby君はどこのスレでも邪魔しかしないね
2019/12/25(水) 22:18:35.22ID:ZI663GBY
Ruby なら簡単!
これだけでカレントディレクトリが分かるw

p Dir.pwd
2019/12/25(水) 23:47:22.85ID:Jr8g24A7
>>430
カレントディレクトリは多分terminal上での起動でもfinderでも同じです。
426が分かりづらい文章で申し訳ないのですが、なぜかクリックした時
新規にterminalのウィンドウが出て実行ファイルまでの絶対パスまで出てきたので。
terminal上での起動方法はカレントディレクトリに移動してからの"$ ./実行ファイル"です

>>432
一応./とか../とか新規ディレクトリ作ってその中にぶち込むとかはやったんですが、それでも
結果は変わりませんでした。改めて自分で見ても分かりづらいのですが、429の9行目の/User/~~
というのが読み込み部分を絶対パスにしたやつで、その場合はFinderからでも読み込めました。

>>435
OpenGLで簡単な描画をするやつです。
ビルドが

c++ main.cpp -g -Wall -std=c++11 -I/usr/local/include -L/usr/local/lib -lglfw3 \
-lGLEW -framework OpenGL -framework CoreVideo -framework IOKit -framework Cocoa

とかそんな感じでIOKitが入ってるので多分そうかもしれません、入門書
(ttp://marina.sys.wakayama-u.ac.jp/~tokoi/GLFWdraft.pdf)のコピペです。
もしかしてMacでOpenGLを動かす場合って全てiOS対応しなきゃいけないんでしょうか…?


後遅いかもしれませんが長文&多レスと先ほどのお礼を言い忘れててすみません。
非常に稚拙な文章ですが、質問に答えてくださってありがとうございます。
2019/12/26(木) 00:25:36.72ID:qMazsM0J
すまんそれならiOS関係無いな
カレントディレクトリがどうなってるか、MacOSのAPIで取って
それを表示してみてターミナルとFinderでどう違うか確認した方がいいかと
2019/12/26(木) 00:44:53.30ID:mIZi4PgB
MacってBSDらしいじゃん
多分じゃなくて、getcwd()すればいいんじゃ

>カレントディレクトリに移動して
どこにいても、今いるところがcurrentなのだが
2019/12/26(木) 00:51:48.47ID:aYxazJyl
ファイル読み込みをそのまま生成に変更してみ
カレントディレクトリちゃんと考慮してないよ相対パスと絶対パスでファイル生成される場所かわるよ
442デフォルトの名無しさん
垢版 |
2019/12/26(木) 01:09:15.00ID:uS8pvwi2
>>438
Finder上でダブルクリックで起動する場合はカレントディレクトリはホームディレクトリだったように思うよ。
ダブルクリックで起動したいなら、
#!/bin/sh
cd "$(dirname "$0")"
./program
と書いたprogram.commandをprogramと同じ場所に作ってchmod +xし、それから起動するとよい。
program.commandのあるディレクトリに移動してからプログラムを移動するシェルスクリプトだから、確実に
カレントディレクトリをprogramのあるディレクトリに変更できる。
2019/12/26(木) 01:14:40.83ID:T0QuicHn
Ruby なら、File.expand_path で、相対パスを絶対パスへ変換できる

相対パスでエラーになるなら、それを絶対パスへ変換すれば?
2019/12/26(木) 01:17:24.37ID:91oPsedU
Ruby ならって情報意味ないから消えて
2019/12/26(木) 01:18:31.55ID:hx3t0oVF
>>439 >>440
とりあえず実行ファイルの入ってるディレクトリ名はsampleで、
カレントディレクトリに移動して~というのはterminalでそこまで移動した
という意味です、念の為付け加えたのですが説明がヘタクソ故分かりづらくてすみません。

そして言われた通り
getcwd(pathname, PATHNAME_SIZE);
fprintf(stdout,"現在のファイルパス:%s\n", pathname);
をmainの最初にぶち込んだところ。

ターミナルでの実行では
現在のファイルパス: /Users/username/program/GLFW_tutorial/sample/sample

finderでの実行では
finderからsample内の実行ファイルをダブルクリックするとterminalのウィンドウが出て

Last login: [前回のログイン情報]
username:~ usename$ /Users/username/中略/実行ファイル ; exit;
現在のファイルパス:/Users/username
Error: Can't open source file: point.vert
Error: Can't open source file: point.frag
とterminal上に表示されました。

finderの最初の方で実行ファイルまでの絶対パスが出てたので、多分同じところ開いてると
思い込んでましたがなぜか /User/username になってたみたいです
素人の先入観で余計な一手間を掛けさせてしまって申し訳ありません orz
2019/12/26(木) 04:42:31.39ID:T0QuicHn
Ruby なら、あちこちに、p Dir.pwd
って書けば、その時点のカレントディレクトリがどこか、すぐわかる

それに、File.expand_path で、相対パスを絶対パスへ変換できるし

何でも、p を付けるだけで、分かるから!
エラーを解決する速さが、桁違い!

C/C++ とかは、ポインターもあるし、1週間ぐらい解決できないのも、ザラ。
効率が悪い
2019/12/26(木) 04:48:44.82ID:91oPsedU
消えろ
448430
垢版 |
2019/12/26(木) 06:51:13.58ID:CYmUjjjA
>>445
finderから起動したときのカレントディレクトリについて誤った情報を書いてすまんかった。正しくは>>442が書いた通り(=445で自分で確認した通り)だね。

ついでに、知ってるかもしれないけど補足情報。
「Rubyでは〜」といってる奴はこの板の有名な荒しなのでスルー推奨。どこかで聞き齧った上辺だけの知識と構ってちゃん精神によって、的外れな情報や誤った情報を垂れ流す困り者。いくら周りが指摘しても改まる気配がない。
書き方が特徴的だからすぐに分かると思う。
2019/12/26(木) 09:04:48.57ID:cN+Hl7PN
>>438,445
解決したみたいだけど一応補足

>>432 > まず相対パスを絶対パスに変換して
これはハードコードで絶対パスを指定するって意味ではなく
指定している相対パスそのものを関数を使って絶対パスに変換してみれば?って意味ね
450デフォルトの名無しさん
垢版 |
2019/12/26(木) 11:32:31.02ID:qmNoWNu8
CどころかOSすらまともに使えないような香具師は
まずpythonで練習汁
話はそれからだ
451426
垢版 |
2019/12/26(木) 11:47:02.89ID:hx3t0oVF
>>442,448,449
(安価打ちすぎると書き込めないらしいのでひとまとめになります)
ありがとうございました、書き忘れてましたが無事解決しました!
とりあえず442さんのやり方と449さんのやり方両方で成功しました、
430さんのレスがきっかけでカレントディレクトリについて考えることになったのでありがとうございます!
長文&稚拙な説明で長い間付き合わせてしまいましたが、
懇切丁寧に解説してくださった皆様方にはただただ感謝の極みですm(_ _)m
2019/12/26(木) 12:51:22.31ID:DjlxxgLR
c++20対応してる処理系てどれ?
453デフォルトの名無しさん
垢版 |
2019/12/26(木) 14:08:21.39ID:AOHRGRKj
clが全く対応してないのは知ってる。
2019/12/26(木) 15:03:20.65ID:91oPsedU
VCは一部対応してる
2019/12/27(金) 11:59:00.73ID:mPCTTnxc
どっちやねん
2019/12/27(金) 14:20:44.04ID:rOhR0D35
https://ja.cppreference.com/w/cpp/compiler_support

gccが一番対応が進んでる
2019/12/27(金) 14:23:56.07ID:eT+8Od/E
コンセプト使おうと思ってgccビルドしたけど、ビルド成功に満足して結局何もしてない
2019/12/27(金) 18:15:17.64ID:XdsZzS9X
> ビルド成功に満足して結局何もしてない
あるあるやな
2019/12/27(金) 18:26:52.15ID:SnoWmlYG
じゃあ話はかんたんだ
gccの改造をすればいい
2019/12/28(土) 08:02:42.09ID:YMDBWz/J
gccは真っ先に規格に対応するけど、
コード品質が糞すぎて結局商用には使えない
2019/12/28(土) 14:03:33.98ID:YMDBWz/J
ubuntuでapt install clangをさっきインストールしてみた。
gccで正常に動くプログラムが動作しないんで調べてみると
#pragma omp parallel
で使ってるomp_get_thread_num()がスレッドidを0しか返してない。
スレッドそのものは指定した数だけ、立ち上がってるのにどのスレッドも0しか返してないんだけどなんで?
2019/12/28(土) 16:04:39.76ID:y9mZ+5If
それが返すのはスレッドIDじゃなくない?
2019/12/28(土) 16:11:50.22ID:c5TG1bir
OpenMP知らないのに関数名だけ見てレスしただろ
2019/12/28(土) 16:14:16.51ID:y9mZ+5If
知ってるけど関数間違えてた
2019/12/28(土) 17:13:12.18ID:YMDBWz/J
#pragma omp parallel num_threads(16)
{
#pragma omp critical
{
cerr << "thnum = "<< omp_get_thread_num()<"\n";
}
}

単にこれだけ。
gccは問題ないのに
clangが 0 しか返さない。
clangのエラーメッセージがよさげなんで乗り換えたいんだけど
2019/12/28(土) 17:15:58.80ID:izuDiHMA
スレッド出来てるならコンパイルオプションじゃないよなあ
2019/12/28(土) 18:59:17.80ID:wFzdDG/T
omp_get_thread_num always returns 0
で調べてみて
2019/12/29(日) 00:45:01.76ID:DJG0a+qG
clang の omp 解決しました
2020/01/01(水) 11:25:57.89ID:EQq3rigy
Win10上のVS2019でもParallel Studio2020でも、
ubuntuのgccでもコンパイル&実行できる、コンソールプログラムを書きました。
標準で勝手にリンクされるライブラリ以外にライブラリの指定などは一切行っていないのですが、
Parallel Studioでコンパイルしたものだけ、実行直後すぐに終了されてしまうので、
デバッガで実行させると、

序数270がダイナミック ライブラリから見つかりませんでした

と表示されます。
どなたかこの件で情報お持ちじゃないですか?
ちなみにVSでもネイティブ/WSL ubuntuのgccでは正しく実行できています
2020/01/01(水) 11:38:25.85ID:UDgnGpGd
>>469Intellのなんかをインストすればok
471デフォルトの名無しさん
垢版 |
2020/01/01(水) 11:40:01.97ID:tqBP4ADq
.def 使えば解決するはず
2020/01/01(水) 12:17:27.05ID:EQq3rigy
>>470
今コンパイルして動かないので、dllのチェックはしてるんだろうと思いましたが、
void
main(){
cout << "Hello World\n";
}
はインテルでも何の問題もなく動いたのでdllが足りないんだと思います
2020/01/01(水) 12:54:53.74ID:kPvcajv8
いまさらながら、std::vector::swap がC++14までnoexceptじゃなかったことに気付いた。
今までvectorをメンバに持つクラスのmoveコンストラクタ/代入の中でswapを使って
しれっとnoexceptを付けてたけど、C++11では本来どうすべきだったんだろう。
2020/01/01(水) 14:11:16.43ID:Y/jFplKd
swapを例外吐くように実装するほうが難しそう…

>>469
これかしら
https://software.intel.com/en-us/articles/redistributable-libraries-for-intel-c-and-fortran-2019-compilers-for-windows
2020/01/01(水) 15:11:33.16ID:kPvcajv8
>>474
実際に例外が発生する処理系はまずないんだろうけど、規格の上ではnoexceptがついていない以上
それに備えなければならないわけで。
2020/01/01(水) 15:40:05.94ID:MYEeMeEE
noexcepつける理由ってほぼ自己満足だよな
unwindの最適化気にするぐらいなら例外禁止にするわ
2020/01/01(水) 16:29:22.59ID:kPvcajv8
>>476
つまり、>>473のようなケースではそのままnoexceptを付けないmoveコンストラクタにするということかな。
例外禁止というのがどこのことを言っているのかよくわからないが。
2020/01/01(水) 17:53:46.55ID:6jqQqgz1
C++17 からは noexcept 指定は型の一部ってことに変更されてる。
(noexcept から非 noexcept への型変換は有りだが逆は駄目。 まあ無理にキャストすればできなくはないだろうけど……。)
型が合わなきゃコンパイルエラーだ。

各種ライブラリとの組み合わせの関係で否応なく気にしなきゃならんってこともあるんじゃないの?
2020/01/03(金) 12:36:25.83ID:umaZYxrI
Intel Compiler 19.1の序数270エラー解決しません Help me
2020/01/03(金) 14:13:50.99ID:FKz36Fkl
>>479
だから、intelのmathmaticsライブラリをインストしろ
2020/01/03(金) 19:33:04.88ID:umaZYxrI
MKLですか?
2020/01/04(土) 11:34:30.60ID:fWyFLqKp
mkl2019というか
インテルコンパイラツール 2019なんかをインストールすると
Visual Studio16.4環境を破壊するよ
単にコンパイラ環境だけでなくプルダウンメニューの内容とかも破壊してしまう。
VS 16.4以降はParallel Studio 2020以降じゃないと対応しない
2020/01/04(土) 20:26:44.77ID:WECvYau6
副作用で草
2020/01/05(日) 00:12:30.19ID:HA4RDQkA
環境破壊とかグレタ嬢に報告しないといかんな
2020/01/05(日) 15:10:03.49ID:cAxs9Xlp
>>480
知りもしないでいい加減なレスすんなアホ
2020/01/06(月) 13:40:33.49ID:Q/9nqAWN
>>485
え?私はそれで解決したんだけど
知りもしないで碌ないちゃもんつけんな
2020/01/08(水) 16:50:37.82ID:3hPXf+vV
>>486
parallel Studio 2020えコンパイルに必要なライブラリ一式がすべてそろってるのに
わざわざ別途mklなんか必要あるかよ。わかってんのか馬鹿たれ。
しかも今,mkl2019しか入手できない中、
最新VSにインストしたら不具合起こすことわかってる2019ツールのインストすすめてどうすんだアホ
死ね情弱ゴミ
夢でも見てんのか?
2020/01/08(水) 23:18:09.28ID:qsayucr9
人を罵倒せずにいられない人っているよね
2020/01/09(木) 08:33:01.04ID:pwu9e7aL
他では自信がないんでしょうね
2020/01/13(月) 12:28:29.10ID:Tr5rZ1p8
テンプレートテンプレートパラメタに関する質問です。
こういうのはどう書けばいいのでしょうか?
以下はコンパイラできないんですが、
意図としては
テンプレート引数の型を関数引数として使いたい。
そして、テンプレートテンプレート引数の型Xを返したい
Xの型としてはデフォルトで'+'が定義されているdouble とか intが入ります

template < template<typename X> class L, template<typename X> class R>
X &
Func(const L<X> & l, const R<X> & r)
{
return l + r;
}
2020/01/13(月) 12:49:13.64ID:Tr5rZ1p8
コンパイラできないじゃなく
コンパイルできない
です

L<X>の部分をどう書けばいいのかわからないんです。
ところで、
clangってデフォルトテンプレート引数を正しく処理できないんですね

template< typename T = int>
class C{
};
・・・・
C x;

がエラーになってしまう。
C<> x; と書けばokです
gccは<>がなくてもokです
2020/01/13(月) 12:56:31.05ID:A/MByXKy
Xが何者か書いてない
Xが型ならtypename Xを<>の中に付け足すべし
2020/01/13(月) 13:00:00.75ID:A/MByXKy
template<template<typename X> L>
はtemplate<template<typename> L>と同じでXはなんの意味も持たない
2020/01/13(月) 13:11:53.50ID:A/MByXKy
classが抜けてた
2020/01/13(月) 13:33:15.28ID:Tr5rZ1p8
>Xが型ならtypename Xを<>の中に付け足すべし

Func(const L<teypename X> & l, const R<teypename X> & r)

ってこと???

テンプレート引数の X の型を返すのはどうすればいいんですかね?
2020/01/13(月) 13:38:01.62ID:A/MByXKy
template<typename X,
template<typename> class L,
template<typename> class R>
X Func(const L<X>& l,const R<X>& r)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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