【初心者歓迎】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/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)
2020/01/13(月) 13:44:12.54ID:Tr5rZ1p8
>>492
>Xが型ならtypename Xを<>の中に付け足すべし

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

と具体的にXを書く必要があるってことでしょーか?
2020/01/13(月) 14:14:22.42ID:Tr5rZ1p8
>>496
なるほど。
わかりました。
2020/01/13(月) 14:26:44.12ID:Tr5rZ1p8
Funcが2項演算

X operator+ (const L<X> &l, const L<X> &r)

だと
template < typename X,
template<typename> typename L,
template<typename> typename R>
は,clangで
invalid operands to binary expressionになりますね。
2020/01/13(月) 15:21:33.84ID:Tr5rZ1p8
https://faithandbrave.hateblo.jp/entry/20081003/1223026720
ここにある
floatを例えばdoubleとかintとか汎用性を持たせたい

Vector<double> x;
Vector<double> y;
Vector<double> z;
Vector<double> t;

t= x+y+z;
という計算ができるようにしたい。
このとき
template <typename T>
class Vector{
ここに式テンプレート一切合切をメンバに持たせる
};

と定義して、式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
2項演算の一番最初に呼ばれる

template <class L, class R>
Expression<L, Plus, R> operator+(const L& lhs, const R& rhs)

ここにfloatやdoubleの型情報を埋め込むにはどうすればいいのか?
ってことになると思うんですが。
2020/01/14(火) 12:00:41.65ID:AM8t1N0H
C++に108ある苦行の一つ、テンプレートの明示的特殊化
2020/01/14(火) 12:10:40.04ID:AAWN8rY8
108で済むのか?
2020/01/14(火) 12:53:30.61ID:KjTpusiu
Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
operator +の特殊化を書くなりいくらでもやり方はある
504デフォルトの名無しさん
垢版 |
2020/01/14(火) 13:00:30.38ID:Sh3SY+TQ
簡単に描けないと意味が無い
2020/01/14(火) 13:05:03.28ID:KjTpusiu
ETがそんな簡単に書けるわけねーだろ
506デフォルトの名無しさん
垢版 |
2020/01/14(火) 17:54:11.46ID:3su9tm6y
>>500
そのサイトをちょっと読んでみたんだけど、LとRがすでにfloatやdoubleの型情報を持っているように思うのですが。
507デフォルトの名無しさん
垢版 |
2020/01/14(火) 18:39:49.77ID:3su9tm6y
>>500
https://ideone.com/3Hp3q6
2020/01/15(水) 09:17:00.06ID:kgDFfipS
>>506
完成形はサイトの一番最後にある
Expression , Plus , operator+
で、operator+ -> Expression -> Plusの順で呼ばれる、
operator+ に演算型(floatやdouble)がないので、ExpressionとPlusのfloatが自動的に選択されてしまう。
一番はじめのoperator+にデータ型を識別する仕組みを入れてそれを引き継いでいくか、
ExpressionとPlus内部でデータ型を認識することが必要だと思うんだけど?
2項演算でなければ3つの型を並べれば済むのにと思ってました。


>>507
using valu_type か
めっちゃ参考になります。
てかこれでほぼ解決です。
聞いて良かった。ありがとうございました
509デフォルトの名無しさん
垢版 |
2020/01/15(水) 15:44:09.21ID:0mJheqXR
なんでこの子そんなに上からなんだろ。
2020/01/15(水) 22:41:08.06ID:kgDFfipS
どこが上から?
2020/01/15(水) 22:55:31.27ID:CBF4WmsT
ちょっと賢そうだから嫉妬してる感
2020/01/15(水) 23:10:31.17ID:kgDFfipS
見下して質問やレスした箇所がどこかわからん。
513503
垢版 |
2020/01/16(木) 10:42:26.08ID:CVktcrTk
>>510-512
自分もちょっと偉そうだな、と思ったけどな
>>506に対するレスとかね
答え教えてもらってて経験不足で理解できてないのに言い返してる
読んでてわからんなら同レベルってことだろ
514430
垢版 |
2020/01/16(木) 11:28:05.62ID:0X0XQobn
もしかすると文字でのコミュニケーションが下手なだけかも。直接対話しているならイントネーションやニュアンスで伝わるものが文字では伝わらない、誤解され得る、ということが分かってないとか。
「〜思うのですが。」ではなく「〜思うのですが、どうでしょうか?」と書けば言い返しているのではなく疑問点を質問していると明確になるのにね。
2020/01/16(木) 11:29:06.76ID:0X0XQobn
>>514の名前欄は間違いなので無視してください
516デフォルトの名無しさん
垢版 |
2020/01/16(木) 11:36:45.85ID:N6AzyVRW
int main() {
while(1) {
if (kbhit()) return -1;
}
}
517デフォルトの名無しさん
垢版 |
2020/01/16(木) 13:18:13.07ID:lpjDYSs5
環境はMac Mojave10.14.6、VScodeは1.14.1
clang,gccはApple LLVM version 10.0.1 (clang-1001.0.46.4)です。
他VScodeの設定で"clang.cxxflags": [
"-std=c++17"
]
としています。
VScodeを使っていて、/Users/[USERNAME]/PATH/にある
c.cppというファイルを右上の矢印でコンパイルしてたら急に
cd "/Users/[USERNAME]/[PATH]/" && runFiles=`ls *.cpp` &&
g++ -std=c++17 `echo ${runFiles}` -o c && "/Users/[USERNAME]/[PATH]/"c

duplicate symbol _main in:
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/c-216688.o
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/d-c0a03b.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

というエラーが出てきました。
対応するにもこの/var/folders/fy/以下にあるファイル群がなんなのか分かりません、
どうすれば良いのでしょうか。
2020/01/16(木) 13:27:47.37ID:xhLhfq9D
>>517
シンボルが重複している。
たぶんinline指定を忘れてるか、変数の定義が重複している。
2020/01/16(木) 14:34:35.42ID:vo+Ub67N
>>513
オマエ何様のつもりだ。
匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
だいたい>>507のレスにしても大概だろ
using valu_type= T
とかww
こんな回答もらってよろこんでるほうもアレだが、

auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
ですむ話
レベルの低い奴に相応の応対したんだろww
2020/01/16(木) 14:39:29.98ID:vo+Ub67N
>>513
>答え教えてもらってて経験不足で理解できてないのに言い返してる

その答えのレベルのわからんおまえも同レベルって乞田ww
521デフォルトの名無しさん
垢版 |
2020/01/16(木) 14:50:56.26ID:sHruIOmX
乞田川
乞田型
乞田首
522513
垢版 |
2020/01/16(木) 16:00:48.56ID:CVktcrTk
>>519
質問者が聞いてるのは内部で使ってる型に応じて実装を変えたいって話なんだが
お前何もわかってないアホだろ、autoにしても何も変わらねーんだよ
2020/01/16(木) 16:06:03.64ID:CVktcrTk
あと
>>517-518
_mainてあるから多分エントリポイントが重複してるのでは?
2020/01/16(木) 16:21:00.89ID:vo+Ub67N
>>522
やっぱりな
auto一発ですむ話に
>>503
>Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
>operator +の特殊化を書くなりいくらでもやり方はある

こういう寝言ほざいてたんだな。

質問者は
>>500
>Vector<double> x;
>Vector<double> y;
>Vector<double> z;
>Vector<double> t;

>t= x+y+z;
>という計算ができるようにしたい。
>式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
>式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
2020/01/16(木) 16:21:26.81ID:vo+Ub67N
>>522
つづき

内部に
type持たせるも何も

auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
として、
struct Plus{
struct Plus
{
template <typename T>
とするだけで、
質問者のやりたいことはいくらでも出来ますがなにか。
お前自身低レベルの極みなんだよ馬鹿たれ
2020/01/16(木) 16:23:29.03ID:vo+Ub67N
>>522
お前は
Op::Apply(l_[i], r_[i]); の型がvalu_typeの型そのものってことがわかってない
アホは死にな。
2020/01/16(木) 16:27:23.02ID:CVktcrTk
質問者は型情報を渡したいと言ってるだろうが
お前のやり方だと要素ごとのbitwise orとか実装するときに困るんだよアホ(多分他にも困る場面あるはず
整数だろうが浮動少数点数だろうが表記が同じ演算ならお前の言うそれでいいけどな
2020/01/16(木) 16:28:28.38ID:CVktcrTk
あと
>オマエ何様のつもりだ。
>匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
そっくりそのまま返すわキチガイが
2020/01/16(木) 16:33:49.27ID:vo+Ub67N
>>522
言ってることがわからなければ>>507
のコードで
typename L::value_type →auto に置換
using value_type = T; → 削除
Vector<int> →Vector<double>に置換

とでもして実行してみろ低脳
2020/01/16(木) 16:39:34.67ID:CVktcrTk
>Op::Apply(l_[i], r_[i]); の型がvalu_typeの型そのものってことがわかってない
お前の言ってるそれは>>506そのもの

そういや俺operator +の特殊化とか書いてたけど
Applyの方だな
あとオーバーロードが抜けてた
2020/01/16(木) 16:40:27.48ID:vo+Ub67N
>>527
はぁ?文盲か低脳
>>500
ex template をVector内部に持たせるんじゃなく、独立させて、
t= x+y+z;
演算型をfloat double int に汎用性を持たせたいといってるんだろうが。
だれが"要素ごとのbitwise orの実装"の話なんかしてるんだ。お前の勝手な妄想だろが馬鹿たれ
>多分他にも困る場面あるはず

を、妄想の自己弁護か?www
夢でも見て寝ぼけてんのかアホ

テメエみたいな低脳ごときが俺様に対して言葉の使い方気をつけろ
2020/01/16(木) 16:42:45.67ID:vo+Ub67N
>>530
はぁ?
Op::Apply(l_[i], r_[i]); が型情報もってるのにわざわざクラス内部に不要なtype実装させてどーするつもりだと言ってるんだよ低脳
日本語わからんのかアホ
お前は日本語の勉強からやり直せ
2020/01/16(木) 16:44:58.53ID:vo+Ub67N
アホさらしあげ

>>522
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ

変わるんだようすらバカ
autoにするだけで質問者の解決だ。ばかたれ
2020/01/16(木) 16:47:00.45ID:CVktcrTk
まじめんどくせぇこいつ
俺はtypeだのvalue_typeだの余計な要件増やすことを良い実装だとは思ってないぞ
>>506を挙げてそれに言い返してるのを批判的に言ったのはそれが理由
お前がドヤ顔でautoとか言い出す前からな
2020/01/16(木) 16:52:26.75ID:CVktcrTk
>>525
>template <typename T>
>とするだけで、
それ>>507の時点ですでにそうなってるんだが
2020/01/16(木) 17:42:18.71ID:ZhNhElM8
で、ID:vo+Ub67N は逃げたの?
いつものイチャモンつけるしか能が無いクズだろうけど
そんな暇があったら最初からちゃんと答えてやれよゴミが
2020/01/16(木) 19:09:23.03ID:goTqdxUb
外野が喚いて質問者が迷惑するパターン?
2020/01/16(木) 19:24:24.34ID:J+/qaxiI
>>518
ご返信ありがとうございます、とりあえず言われたことに関係ありそうなことを
調べたのですが、自分のファイルにそういった感じの文法ミスがあるのかは
分かりませんでした。一応短いのでエラー吐いたソースコード貼っておきます。

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; i++) cin >> a[i];
long long ans = 0;
for (int i = 1; i <= 3000; i++) {
long long sum = 0;
for (int j = 0; j < N; j++) sum += a[j] % i;
ans = max(ans, sum);
}

cout << ans << endl;
return 0;
}

後、以前コンパイルできていたプログラムで同様の手順を試しにやってみたら、
同様の症状が起こって実行ファイルが消えました。

>>523
申し訳ありません、無知だったので色々調べたのですがエントリポイントという物が
よく分かりませんでした。気がつかないうちに何かまずいところ弄って他のプログラムと
開始アドレスが被ったとかそんな感じでしょうか?
2020/01/16(木) 19:36:20.45ID:AwrKlCOf
*.cppにより、エントリポイントのmain関数を2つコンパイルしたんではないか?
2020/01/16(木) 19:38:26.02ID:AwrKlCOf
1つのフォルダには1つのプロジェクトにした方がいいのかも。
2020/01/16(木) 19:38:35.95ID:ZhNhElM8
>>538
エントリポイントっていうのはそこでいうmain関数のことね
それが複数作られてるとエラーになる
そのソースコードをヘッダファイルに書いててそれを複数のファイルでインクルードしてるとか
あるいは他にもmain関数を定義してる余計なソースコードがあるとかそういうのが原因だとおも
2020/01/16(木) 19:40:09.05ID:ZhNhElM8
リロードしてなくて被った
2020/01/16(木) 20:19:17.16ID:J+/qaxiI
>>539>>541
とりあえずファイル内にmain関数を持つc.cppとd.cppがある状態だったので、
試しに適当なディレクトリを作ってそこにc.cppを移してみたらコンパイル成功しました!
ずっと詰まっていたので感謝します、お二方とも本当にありがとうございます!!

恐らく原因である runFiles=`ls *.cpp` の部分が以前どうなっていたか
覚えていないのですが、前は同ディレクトリにmain文複数あっても成功しているんですよね…
VScodeの自動更新等でビルドの設定が変わったとかでしょうか…?
2020/01/16(木) 20:26:56.83ID:J+/qaxiI
申し訳ありません、今VScodeのsetting.jsonを確認したらいつの間にか
"code-runner.executorMap": {
"cpp": "cd $dir && runFiles=`ls *.cpp` && g++ -std=c++17 `echo ${runFiles}` -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},
が書かれてました。恐らくですが、最近別の機会でc++17のオプションを使う時にそのまま他の方の
設定を写していたのと最近一つのファイル内に複数のフォルダ作ることが無かったからだと思います。
昼から何度も長文でお騒がせして申し訳ありませんでしたorz
エントリポイントに関しては大変参考になりました。
545デフォルトの名無しさん
垢版 |
2020/01/17(金) 10:27:22.98ID:fMuYUnvE
>>522
戻り値の型をテンプレートにするのってどうするの
2020/01/17(金) 14:15:38.50ID:GiayRj2a
Tかautoでいんじゃね
あるいはdecltype
547デフォルトの名無しさん
垢版 |
2020/01/17(金) 14:18:21.61ID:fMuYUnvE
戻り値Tで関数オーバーロード出来る?
2020/01/17(金) 14:37:12.74ID:GiayRj2a
戻り値が違うだけだと無理よ
2020/01/17(金) 14:39:16.16ID:GiayRj2a
あ、戻り値だけ指定させる関数テンプレートならオーバーロードしなくても
その関数テンプレート一つでいける
ただし推論できないので呼び出すときにテンプレート引数の指定は必須
550デフォルトの名無しさん
垢版 |
2020/01/17(金) 18:48:04.18ID:PzZl0Asa
autoと型指定で同じコードに落ちるとは限らないというか、おそらく同じコードにならないので、よく考える必要があると思います。
2020/01/19(日) 01:28:50.10ID:pwo1VM/U
decltype(auto) とも使い分けが必要なの本当にアレだよな……
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。