X


C++相談室 part141

■ このスレッドは過去ログ倉庫に格納されています
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

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

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

このスレもよろしくね。
【初心者歓迎】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
533デフォルトの名無しさん
垢版 |
2019/03/22(金) 01:10:14.13ID:LxKdyD8r
定数って参照透過性があるよね。
C++はconstexprがあるのだから、関数型プログラミングを超える、定数型プログラミングという新パラダイムを提唱したいと思います。
2019/03/22(金) 01:14:02.50ID:6voZlles
コンパイル時レイトレーシングとかやってる人もいるけど狂気の産物って感じがして C++ ぽくて良い。
535デフォルトの名無しさん
垢版 |
2019/03/22(金) 02:28:04.74ID:jw/5aFNH
しーぷら一筋30年〜、速いの、上手いの、やっすいの〜
2019/03/22(金) 02:37:28.24ID:M4ChOHMa
>>534
>コンパイル時レイトレーシング
一応訊くけど、ああいうのはレイ当てる3Dオブジェクトのデータは
全てC++のソースに書かないといけないことは分かってる?(モデリングデータをファイルから読んでコンパイル時にレイトレするのは当然不可能)
あの試み自体は面白いと思うけどね・・
実用性や(ソフトウェアの)ユーザーの利益にならないことをもてはやさないで欲しいもんだが
2019/03/22(金) 06:24:27.94ID:j45II+ff
プリレンダのゲームは大量にあるしレイトレーシングしとくのもその延長線上じゃない
2019/03/22(金) 08:03:01.00ID:VPBgCitj
コンパイル時ファイル入出力がサポートされればいいわけだ
それにレイトレーシングはまあ確かに冗談も含まれてるだろうけどそれだけ複雑で重い処理でも可能だという技術デモは価値があるだろう
画像にフィルタを適用するとかパターンが決まっているエフェクトを生成するだとか色々できて可能性はあると思うよ
2019/03/22(金) 08:17:25.29ID:sSVPAm0I
汎用的につかってもらうことを目的としているライブラリを除けば
コーディング時に型が決まっていないことなんてありえない

もしあるならそれは設計してないってことじゃん

templateなんて汎用的につかってもらうことを目的としているライブラリを書く場合にしか使わないだろ

後で、intからdoubleになるかもしれないから、なんて言ってるバカいるけど
きっちり設計しろよ
2019/03/22(金) 08:28:45.64ID:wNvbYX88
>>539
>>530
2019/03/22(金) 09:08:34.94ID:OAKB0NCU
>>538
コンパイル時にやることじゃない
新たなc++の巨大トラップだよ
ますますc++嫌いになった
2019/03/22(金) 09:11:15.22ID:VPBgCitj
>>541
俺は好きになったよ
2019/03/22(金) 09:31:33.91ID:OAKB0NCU
いいね、趣味で気楽に使ってる人は
2019/03/22(金) 09:52:12.19ID:VPBgCitj
ええやろ
楽しいわ
2019/03/22(金) 10:20:45.52ID:RSNtol3b
メタプログラミングってコンパイル時に評価してゼロオーバーヘッドとかすごいとは思うけど
学習コストや可読性と釣り合ってるか?
2019/03/22(金) 10:32:59.03ID:OAKB0NCU
仕事で4月になったらまた新しいメンバーシップ増えるけど
なまじ趣味でc++使ってたやつが一番困る
新しい機能使いたいだけでトータルの生産性考えないんだよね
2019/03/22(金) 10:41:23.85ID:wNvbYX88
そんな一部の現場の実情を忖度してたら競争に負けてしまうのではないか?
2019/03/22(金) 10:45:43.23ID:VPBgCitj
毎回同じこといってる奴いるよな
このスレには10人くらいしか居ないってネタは挙がってるし
2019/03/22(金) 11:07:13.15ID:v3KGlGVP
>>545
釣り合う点がどこなのかは人それぞれだから各自が判断してバランスいいところで使えばいい。
チーム開発ならプロジェクトごとに指針を決めれば良いかと。
2019/03/22(金) 11:11:55.43ID:nPC1T1eJ
>>545
やってることの性質にもよる
サーバーサイドなんかで潤沢なリソースを使って長時間動くものだとほとんど意味はないよ
その場合.NETやJavaのような実行時コード生成の方が遥かに柔軟性が高く、オーバーヘッドも実質的にはほとんどない
2019/03/22(金) 12:34:15.37ID:6voZlles
>>536
それ自体はただの余興だけど、
コンパイラのバグを顕在化させる成果を出したりもしてるよ。
処理系の開発チームにとってもまずは問題を発見できなきゃ直せないからさ、
色んな形で使ってみる人だってそれはそれで必要なんだよ。
処理系の質が良くなるのは間接的にユーザの利益にだってなる。
2019/03/22(金) 12:35:46.10ID:6voZlles
>>539
きっちり設計できている現場ばかりだったら本当によかったのにね。
2019/03/22(金) 14:12:54.65ID:M4ChOHMa
>>551
まぁその理屈はわからんでもないしメタプログラミングやってるとあの人のブログは勉強になるけどね
ただああいうのはブラックジョークの類であることを忘れると>>537みたいな勘違いした奴が出てくる

>>538
>画像にフィルタを適用するとかパターンが決まっているエフェクトを生成するだとか
それ、画像もコンパイル時に確定してるデータじゃないとあかんのやで?
(しかもconstexprなcharの配列みたいな、C++のコードに直さないといけない)

重ねて言うけど、面白い試みだけど実用的ではないんだよ、ああいうのをC++的だとかカッコいいとかもてはやすのはC++の衰退を招くだけ
趣味グラマは自分が趣味グラマであって時に実用性からかけ離れてるということを自覚すべき
2019/03/22(金) 14:23:16.46ID:M4ChOHMa
あ、でも
>>538
>コンパイル時ファイル入出力
これはやり過ぎな気もするけど個人的にはあっても良いとは思うw
ただ、画像のフィルタリングをコンパイル時にやるのとツール作って実行時にやるのとで
前者が便利な場面ってあるのかね?(しかも前者は非常に開発コストかかる
2019/03/22(金) 14:28:03.34ID:VPBgCitj
>>553
コンパイル時に確定しているデータがあるかもしれないし無いかもしれない
fstreamがコンパイル時に動くようになればいいだけ
そうなれば準備が面倒なプリプロセスも必要ない

研究に対して実用性がうんたらとかわけ分からないことを言うのはよくないなあ
様々なアイデアから自分の都合のいいところをつまんで実用化するのが末端の仕事だろうに
俺が使い道が思いつかないことに熱心になってると界隈が衰退するとかさすがに草生える
2019/03/22(金) 14:29:27.80ID:OAKB0NCU
静的なものはなんでもコンパイル時に解決するって思想が典型的なハンマー釘病なんだよ
コンパイル時だけが解じゃない

そのうち仕事で特に理由なくむやみに重いconstexprぶちこむやつがでてくるだろう
それでビルド時間5分10分長くなったりするわけだ
ほんとc++はクソ
2019/03/22(金) 14:32:15.97ID:VPBgCitj
>>556
問題があるならお前が指摘すればいいだけだし
リリースビルドのときだけコンパイル時計算になるようにすればいいだけ
工夫がたらんなあ
2019/03/22(金) 14:49:00.32ID:X0mnKdTP
>>555
constexpr関数みたいにコンパイル時にできる、実行時にしか出来ない、を「自動で振り分けて問題なく動く仕組み」
の範囲に全て収まるならそうだろうな

後半煽ってきたのでキツめに言わせて頂くが、コンパイル時レイトレはソース公開されてたろ?
あれを実用したゲーム開発の例を一つでも挙げてみろ
有意義な研究ならとっくに実用されてんだよボケ
あるいはボレロ氏の試みに同調して何もかも(ファイル入出力すら)コンパイル時に出来る言語にしよう、なんて動きが委員会に起きてるのか?
お前多分まともにメタプログラミング出来てるレベルじゃないのに調子乗ってるだろ
2019/03/22(金) 15:11:09.28ID:VPBgCitj
>>558
これだけ複雑な処理も出来るんですよっていうだけの話だからレイトレーシングである必要はない
それができるならこういうこともできるんじゃないか?ってなるのが普通
あとゲームのソースは公開されないから知るかとしか言いようがない
C++20でコンパイル時動的メモリが追加される予定だし、実行時でもコンパイル時でもタイミングが違うだけだからいつでも何でもできていいだろっていう流れは既にできている
標準化委員会がボレロを認知しているかは知らん
2019/03/22(金) 15:55:54.71ID:2qpWO6k3
コンパイラで高度なことが色々できるし、原理も実現も公開されてる、
興味を持って調べれば(ある程度なら)理解だってできるかもしれない。
というのはC++の素晴らしい部分だと思うのよ。

で、調べて知ったことを使って試したい、他の人に紹介したいってのは
これまた自然な気持ちだろう。自分もそういう面があるし。
実際に複数人で協力して作る実用プロジェクトで機能を使うかどうかは、
「コンパイル時間」だの「高度化・汎用化で読みにくくなる」だの、
トレードオフの問題になるけど。


分からないのは、「俺はこれ知ってる、お前は知らないだろ」と
他人より優位に立つ材料としてしか知識を使ってないような
投稿が見受けられることなんだよね。
ことにネット掲示板なんて、見ず知らずの他人同士なんだから、
相手をバカにしたって仕方ない、何の益もないだろうに。
2019/03/22(金) 16:19:37.76ID:M4ChOHMa
>>559
>それができるならこういうこともできるんじゃないか?ってなるのが普通
最初の方の主張からずいぶんと縮小したなw

>あとゲームのソースは公開されないから知るかとしか言いようがない
ググれ
ソースの公開なんかされてなくとも技術の動向くらいあちこちで紹介されてる

>C++20 いつでも何でもできていいだろっていう流れは既にできている
今調べたら確かにそうみたいだな、俺の認識不足だったし出来ることが増えること自体は悪くないと思う(前にもそう言ったが

ただ、
>コンパイル時にやるのとツール作って実行時にやるのとで前者が便利な場面ってあるのかね?
この疑問に答えて欲しいもんだけどね

>俺が使い道が思いつかないことに熱心になってると界隈が衰退するとかさすがに草生える
ならお前は使い道を知ってるんだろ?って話
2019/03/22(金) 16:33:55.31ID:M4ChOHMa
正直、ファイル(C++ではない)に書かれてる内容に従ってコンパイル時条件分岐とか手軽に出来たら
結構実用性はあると思うよ
ただその一方で、ここでプロとアマチュアのC++に対する意見がひどく乖離してる(このスレ見てたら気づいてないとおかしいが)ことに
全く問題意識が無いのであれば、それは結局自分が偉そうにしたいだけってことだと思うけどね
2019/03/22(金) 16:39:09.47ID:M4ChOHMa
constexprの拡張とか、そんなに開発現場(アマチュアでもソフト開発者等)から求められてなさそうなことにばかり
最近のC++は注力しすぎじゃないの、ってだけの話なんだけどね
ここでそれを言うと毎回荒れるんだよなぁ
2019/03/22(金) 16:45:13.61ID:7XQoWDDf
C++11すら使えないもんな
2019/03/22(金) 16:46:23.14ID:VPBgCitj
>>563
別に注力しすぎてはいない更新内容は多岐にわたる
constexprは派手だから注目されやすいだけ

https://cpprefjp.github.io/lang/cpp11.html
https://cpprefjp.github.io/lang/cpp14.html
https://cpprefjp.github.io/lang/cpp17.html
https://cpprefjp.github.io/lang/cpp20.html
566デフォルトの名無しさん
垢版 |
2019/03/22(金) 16:48:03.99ID:d9SNUM0T
愛知県人注目。遠州地区の技術者も注目。


[急募]
豊川ハローワーク管内の求人で、SEの席に空きがあります。
四月スタートの仕事なので、急いで応募して下さい。報酬は、
月に20万円から60万円。

英語力は必須ではありませんが、『実はTOEICのスコア以上に
英語ができる』と面接では答えて下さい。(英語は入社してから
頑張って下さい。)

ネットワーク関係が得意だと言って下さい。JP1の経験があれば、
なおよし。ECUの経験があれば、さらによし。キャティアのマクロが
書ける人、大歓迎。(これらは、必須ではありません。)
2019/03/22(金) 16:48:35.97ID:OAKB0NCU
>>557
それがお前の案?
手動じゃんそれ
くそださいとしか

仕事では数十人規模でやってるわけで、そんな人力チェックしたくないわけよ
プルリクぐらいはやってるが全て見きれるわけじゃない

まずはビルド時間の推移とか、内訳を監視するタスクを回すことを考えるだろうが
そういう非生産的な仕事が増えることがクソなんだよ
2019/03/22(金) 16:51:03.18ID:7XQoWDDf
>>567
>>564
2019/03/22(金) 16:51:56.89ID:y6Rn9cx8
C++の新機能なんて大半の開発現場にはいらんだろ
前いたところは初心者向けの教科書を読めばだいたいわかる基本的な構文しか使ってなかった
constexprもなければテンプレートもラムダ式もなかった
コード書けん奴がコードレビューするからそんなもん使った日にはわかりやすく書けとか怒られた
2019/03/22(金) 16:54:51.52ID:wNvbYX88
>>569
マジで?!
それヤバくない?!
2019/03/22(金) 16:56:04.17ID:VPBgCitj
>>567
できあがった物の性能を少しでも上げようっていう話なんだがそれに価値を見いだせないならどうでもいいよ
つまんねえから口を開かないでくれ
2019/03/22(金) 17:00:41.61ID:M4ChOHMa
まぁconstexprのコンパイル時コストを気にするだけなら多分ifdefでdefine CONSTEXPRとかすればいいだろうけど
メタプログラミングはやっぱコンパイル時間長くなる
個人で開発してても無視出来ないわ・・

>>571
性能上げて比較結果を出してから言うべき
2019/03/22(金) 17:03:59.06ID:M4ChOHMa
ていうか>>560の言ったことを実証するかのような流れだなww
2019/03/22(金) 17:06:35.17ID:nPC1T1eJ
>>571
一般に、無駄な拘りに時間かけるのを避けてその分ボトルネック潰しに時間をかけたほうがソフトウェアのパフォーマンスは良くなるよ
2019/03/22(金) 17:54:21.92ID:pFUycIOf
>>563
求められているだろ?
576デフォルトの名無しさん
垢版 |
2019/03/22(金) 18:34:40.09ID:LxKdyD8r
関数型同様、定数型プログラミングにもアンチがわいてきましたか。
アンチがわいたってことは、定数型プログラミングが世の中に受け入れられたってことでいいですね?
2019/03/22(金) 19:08:02.11ID:2qpWO6k3
その機能自体への好悪もあるか知れないけど、
「導入されたからには直ちに覚えて使わないのは罪悪」あるいは
「使わない奴は学習能力の劣る無能、使わないのでなく使えないんだろ」
みたいな、新機能の押し付けが嫌がられてるって部分もあるんでないかな。
2019/03/22(金) 19:19:05.75ID:wNvbYX88
実行時おじさん
2019/03/22(金) 19:21:05.55ID:OAKB0NCU
>>576
関数型持ち出すやつが、c++のconstexprの持ち上げたらいかんだろ
関数型はそんなキーワードなしに部分評価するだけで実現できんだから
2019/03/22(金) 19:23:25.37ID:YgnW0VV3
Googleの結論
Think twice before using template metaprogramming or other complicated template techniques;
think about whether the average member of your team will be able to understand your code well enough
to maintain it after you switch to another project, or whether a non-C++ programmer or someone casually browsing the code base will be able to understand the error messages or trace the flow of a function they want to call.

https://google.github.io/styleguide/cppguide.html#Template_metaprogramming
581デフォルトの名無しさん
垢版 |
2019/03/22(金) 19:26:07.13ID:LxKdyD8r
【定数型プログラミングの掟】
> 「ブッ殺す」と心の中で思ったならッ!その時スデに行動は終わっているんだッ!
2019/03/22(金) 19:31:22.14ID:M4ChOHMa
でも終わったときめちゃくちゃ疲労してるんやで
2019/03/22(金) 20:21:58.70ID:nPC1T1eJ
>>580
それ逆効果じゃね
Google社員でも使いこなせない機能を使いこなす俺スゲェwww
2019/03/22(金) 21:54:10.43ID:nrO+MVHg
>>534
>コンパイル時レイトレーシング
……
2019/03/22(金) 21:57:31.87ID:FYyZQ6ej
コンパイル時C++コンパイルをやったら尊敬する
2019/03/22(金) 22:28:07.22ID:1RSJEChR
正規表現のコンパイルならありかもしれないw
2019/03/22(金) 22:42:15.38ID:78R951f8
自分の知らない概念を勉強するって意味ならlispのマクロでも覚えたほうがはるかに有意義なんだが
そうしないだよね。
なぜならそれじゃ老害にマウントできないから。
まあそういうクソみたいな思想のやつが年取って老害化するんだけど。
2019/03/22(金) 23:22:27.03ID:C43yQc+Q
>>545
コンパイル時に決定していることしかできませんよ
コンパイル時に3の階乗を計算して、ドヤってるやついるけど、それなら6ってタイプしとけよw
589デフォルトの名無しさん
垢版 |
2019/03/22(金) 23:29:13.79ID:LxKdyD8r
でもそれがLALR(1)パーサーを生成するなら?
2019/03/22(金) 23:36:46.32ID:tosUzxZE
コンパイルに時間かかるから、その間暇つぶしに裏でレイトレーシングして遊んでんのかと思った
591デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:40:56.99ID:A6OyMWzd
デイトレーシングってストーカーのことだっけ。
2019/03/23(土) 06:55:12.12ID:jegHMgvE
>>580
「同じプロジェクトで働く他の仲間はアホかもしれない、
あなたの仕事を引き継ぐ奴はボンクラかもしれない、
だから難しい機能を使うのは自重しましょう」って感じか?
一見「あなただけは特別な存在です」と言ってるように見えて、
実は現場の全社員を見下してるような文面だなぁ。
「技巧に走るより素直な書き方をしろ」って趣旨は分かるんだけど。

>>588
参加者の順列で生じるパターンの状態を記録する配列の要素数、
しかも参加者数は変更の可能性あり(コンパイル時には確定する)、
という場合なら contexpr の階乗関数を仕込む意味はありそうね。
2019/03/23(土) 07:22:13.12ID:WDi4jE89
長年プログラムの保守やってるの見るとその通りだが
2019/03/23(土) 08:07:02.46ID:T5eFVdJU
constexpr指定するだけのことが技巧的なのか知らなかった
I/Oや動的メモリと関係なさそうなところに脳死で適当に付けておくだけでいいのに
595デフォルトの名無しさん
垢版 |
2019/03/23(土) 08:35:25.57ID:RdkKrV9k
霞ヶ関文学は禁止ってこった。
2019/03/23(土) 12:20:32.92ID:0OEv8pnV
基本的に新機能は分かりやすく書きやすくするためのものなんだけどな
2019/03/23(土) 12:50:41.97ID:p3DdVUb8
数学への回帰と先祖返りじゃないの
分かり易くなるんじゃない、難しくなるんだよ
2019/03/23(土) 13:37:38.67ID:v/SrloXk
template<typename Item>
Item Fool::InsertItem(const Item& item)
{
 //なにがしかの処理
 item.c_str()...
}

こんなコード見かけると吐き気がするわ
c_str()を持つ型しか使えないじゃん
なんのためにtemplate使ってんだよw
2019/03/23(土) 13:47:58.81ID:uJTAZAlu
c_strを持つ型に限定したいから問題無いけど。
2019/03/23(土) 13:49:44.59ID:T5eFVdJU
何か変か?
c_strを持っているクラスのみを想定しているんじゃないの
本当はSFINAEで消すべきかも知れないけど
2019/03/23(土) 13:50:21.13ID:ByL/s3eU
>>598
だからコンセプトの導入が悲願とされてるんだよ。
2019/03/23(土) 14:34:53.50ID:JQCK5flX
>>598
程度のはsfinaeでいいんだけどね
2019/03/23(土) 14:56:23.90ID:EB4wgvrK
basic_stringの特殊化に限定するなら文字型を受け取るだけでいいと思うんだけど
2019/03/23(土) 15:01:12.26ID:fJspHuQc
>>598
constexprでコンパイル時に特定のメソッドがあるか調べられないの?
2019/03/23(土) 15:03:42.82ID:EB4wgvrK
それは型の情報だから、すでに言われてるようにメタプログラミングでsfinae使って調べるしかない
2019/03/23(土) 15:55:31.24ID:RdkKrV9k
吐き気がするだけで済んでいるのなら御の字。
2019/03/23(土) 16:15:35.83ID:T5eFVdJU
アレルギーが重症化すると辺境で難癖付けて騒ぎ出したりテンプレート指定すると何故か生産性が落ち出したりするからな
2019/03/23(土) 17:08:18.78ID:qcSb+DlG
pythonみたいにエラーメッセージ表示してくれるだけで大分マシになると思うんだけどな
2019/03/23(土) 18:52:42.53ID:4cH0E/is
そうなんだよね
1500行のエラーメッセージの代わりに「itemのメンバ関数c_str()が見つかりませんでした」ってコンパイラが言ってくれてたら
ここまでテンプレートは嫌われなかった
2019/03/23(土) 18:54:43.76ID:enzaJQTj
だからgoのコード生成系のアプローチのがマシってことなんだが馬鹿は脳内でしかビルドしないから通じない訳だ。
611デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:11:19.55ID:A6OyMWzd
これからは定数型プログラミングの時代。
2019/03/23(土) 19:15:22.30ID:EB4wgvrK
>>609
それはC++20でコンセプト入ったら実現されるはず(ライブラリ側で対応する必要あるけど
613デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:18:48.99ID:iMO+WCpL
過去の話をしてるのに未来の話で返されてもな
614デフォルトの名無しさん
垢版 |
2019/03/23(土) 19:22:34.86ID:A6OyMWzd
エラーメッセージがわかりにくいなら、VC++を使うべき。
2019/03/23(土) 19:26:46.49ID:T5eFVdJU
過去のことなんかどうでもいい
未来だけ見て生きていこう
2019/03/23(土) 19:30:40.79ID:EB4wgvrK
>>613
コンセプトは最近出てきた概念じゃないぞ
C++11が0xとか呼ばれてた頃から言われてた話
2019/03/23(土) 21:03:26.04ID:16DhXZwe
>>614
vcはバグだらけで使い物にならない
2019/03/23(土) 21:40:53.85ID:eUSVaq66
>>598
嫌なら実体化しなければ良いんじゃ…
仮にFooのインスタンスを生成したとしても、Foo::InsertItem()を呼ばなければFoo::InsertItem()は実体化されないはず…
2019/03/23(土) 22:45:17.73ID:4cH0E/is
今思えばC++0xのコンセプト案はいろいろ酷かったな
あのまま入らなくてよかった
2019/03/23(土) 23:17:20.42ID:EB4wgvrK
コンセプトマップだとかコンセプトを満たすことを自己申告しなきゃいけないだとか
傍目に見て正直意味わからんかった
2019/03/23(土) 23:51:54.14ID:11jhwwP/
Axiomはとてもいいと思ったが、消えたのだな・・・
2019/03/23(土) 23:53:58.85ID:enzaJQTj
>>588
フーリエ変換の係数みたいなものは実行時には定数だけれど、事前に計算式で計算しておきたくはなる。
でもまあ普通に考えればビルド構成の問題だわな。
なぜコンパイラに無理やり突っ込むかと言えばまともにビルド構成を考える能力がないからっていうね。
2019/03/23(土) 23:54:27.98ID:4cH0E/is
axiomさんは契約アトリビュートとして生まれ変わったのだ
624デフォルトの名無しさん
垢版 |
2019/03/24(日) 00:40:12.28ID:7x4/H6l4
C++の複雑さはオナニー的なところがある
2019/03/24(日) 01:38:06.52ID:b8r3VMdD
コンパイル時に決定してることしかできないなら、コード書く必要あるか?
1+2しか計算できないんだろ、2+3の結果が欲しかったら、コンパイルし直しw
2019/03/24(日) 02:05:19.27ID:xAoD2jBj
狭義のアルゴリズム(有限ステップで終わる)を記述する分にはそれで十分
無限ループを含む手続きを記述したかったら無限再帰すればええ
と考えればメモリが無限にあればコンパイルが終わるまでに任意の処理ができる
627デフォルトの名無しさん
垢版 |
2019/03/24(日) 02:07:46.29ID:4oYv+rwZ
定数型プログラミングでコンパイラを創ろう。
2019/03/24(日) 02:16:59.70ID:9ZLLLplX
コンパイル時に畳み込んで定数にした方がよいかどうかはコンパイラの最適化で頑張って欲しい話で、
それで足りない、さらなるチューニングが必要なときの記法が統一的だったらうれしいねっていう程度の話じゃないかな。
普段からそんなにコンパイル時計算を意図したりはしないよ。
629デフォルトの名無しさん
垢版 |
2019/03/24(日) 02:25:38.27ID:Wmd2CxZH
P言語でC++中間コードを生成するスクリプトを書けばいいじゃない。
swigみたいな。
カスタムコンパイルやカスタムビルドはそのためにある。
630デフォルトの名無しさん
垢版 |
2019/03/24(日) 02:33:38.88ID:4oYv+rwZ
ヤック、レック相当をメタプログラミングで実現することができるのではないか。
スピリチュアルな方向性ではなく。
2019/03/24(日) 02:50:04.22ID:9ZLLLplX
PEG 相当のことを実現しているライブラリとしては Qi があるけど、
Yacc みたいに LALR をやってくれるのは知らないなぁ。
出来るのかな?
2019/03/24(日) 03:13:50.09ID:PmamUspu
>>628
個人的には、メタプログラミングで定数値のパラメータ作るのに構造体でメタプログラミングする必要が無くなったのはconstexprにかわしゃ
■ このスレッドは過去ログ倉庫に格納されています