[過去ログ] C++相談室 part164 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
200(1): (ワッチョイ d17c-sLM4) 2023/06/15(木)06:50 ID:usfnoco+0(1/2) AAS
std::vectorはshrink_to_fit()呼ばない限り勝手にcapacity縮めたりしないはずだけど
201(1): (ワッチョイ d19c-jufV) 2023/06/15(木)08:48 ID:hMmgKiSo0(1) AAS
>>199
コンテナ内のポインタの予約は避けられないよ。
ただ、ポインタのサイズを気にするようなシビアな状況なら、そもそもc++じゃなくてcで実装することを検討すべき。
202: (ワッチョイ b96e-ofsu) 2023/06/15(木)09:00 ID:K4jCDX8M0(1) AAS
シビアな状況でC++が使えないやつがCならOKなはずはない
203(1): (アウアウウー Sadd-g1CP) 2023/06/15(木)10:11 ID:dLjlwX4ma(1) AAS
>>199
何が判ってないのかが判ってないパターンだな
まともな解答もらってても何が正しいのか(なぜ正しいのか)
すら判断出来なさそうなレベル
解答者に失礼
204(1): (ワイーワ2 FF63-pDI4) 2023/06/15(木)10:56 ID:kyFBXozFF(1) AAS
他所スレで同じ様な流れが
>742
質問の仕方が悪いだけwww
欲しい情報を引き出すには一定以上の質問能力が必要
>743
質問の仕方が重要なのはその通りだけど
ここで問題にしてるのは自分が詳しくない領域では質問の仕方が悪かったかどうかも分からないってことでしょうよ
省3
205(1): (ワッチョイ 219b-q0yD) 2023/06/15(木)12:02 ID:J1cG0ikp0(2/3) AAS
>>201
いや、ポインタのサイズなんて全く気にしてない。
質問は、メモリの解放をコンテナに任せるならわざわざスマポで持つ意味ないよね? ってこと。
で、コンテナに任せるというのは元の質問(>>182)への回答に全くなってないよね? ってこと。
(その理由は>>184,200様の書いてくださってる通り)
つーかお前が何も分かってないのは>>195でreset()しなくて良いとかほざいてる時点でお察し。
>>203-204
省5
206(1): (テテンテンテン MMeb-jufV) 2023/06/15(木)12:29 ID:QcI//Xn+M(1) AAS
>>205
コンテナのsmart ptrの扱いは調べた?
コンテナの要素とポインタの参照先の違いについて根本的な誤解がありそう。
vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
vector<smart ptr>もsmart ptr の予約はするけど、smart ptrの参照先インスタンスの予約はしない。
207(1): (ワッチョイ 219b-q0yD) 2023/06/15(木)13:15 ID:J1cG0ikp0(3/3) AAS
>>206
だから、結局任意のコンテナ、クラスに対してスコープ内でメモリを解放する方法は?
new で生ポを持って delete するか、スマポを持って reset するかだろ?
> vectorはまだ構築していないインスタンス用のメモリ領域を予約するけど、smart ptrはそんなことしないよ。
そりゃそう。
ゆえに、メモリを間違いなくリリースしたいなら reset すればよいのですねと>>190で述べている。
それで終わりなのにお前と来たら reset は不要だの元のコンテナの挙動に任せるだの、論旨を全く理解してないとんでもレスばっかり。
省3
208: (ワッチョイ 8bfb-Xx8j) 2023/06/15(木)14:56 ID:M9bt3STi0(1) AAS
186でも言ってるがstaticもしくはvirtualでデストラクタ使えよ
それがシンプルで高速で1行も無駄のない設計な
209: (ワッチョイ 01c9-6bUV) 2023/06/15(木)15:01 ID:B8g22vaD0(1) AAS
182の
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
がコンストラクタで確保してデストラクタで消す話というのはわかってる上で
>他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
なんじゃないの?
そんなものは無いっていう答えもあるにはあるけどサ
210: (ワッチョイ 13f0-8sUu) 2023/06/15(木)18:41 ID:QIwD56Ju0(1) AAS
最近IPP触り始めたんですが全部飽和演算で面食らってます
Modulo関数は無いんですか?
211(2): (ワッチョイ fb8c-jufV) 2023/06/15(木)21:00 ID:W1C5TI4i0(1) AAS
>>207
ああ、ごめん。めっちゃデカイインスタンスのvectorじゃなくて、めっちゃデカイvectorね。
それなら実装依存だけど>184か、>192とか参照無効化の制限とかコピーコストとかあるけど>189。189はsmart ptrにしとけば実用上問題ないかね。vectorのイテレーターは保存するものじゃないし。
212(1): (ワッチョイ c14e-8sUu) 2023/06/15(木)21:28 ID:3cvhbwG+0(1) AAS
実際の所、vectorならclear()→shrink_to_fit()でメモリが開放されないこってありうるの?
213: (ワッチョイ d17c-sLM4) 2023/06/15(木)22:10 ID:usfnoco+0(2/2) AAS
規格上はshrink_to_fit()にメモリ解放する義務はないし、実装定義で何やっても自由(capacityを増やすような真似だけは禁止)
shrink_to_fit()がなんにもしない実装でも一応規格準拠になる
そんな糞みたいな実装が実在するかは知らない
214: (US 0H0b-q0yD) 2023/06/16(金)02:13 ID:PZdB0bgSH(1) AAS
>>211
はい結局一人だけ違う話してた
ハァァ~~~~~(クソデカため息)
215(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ c13e-2rqm) 2023/06/16(金)11:31 ID:QEmhRLek0(1) AAS
>>212
基本的には効率的に実装されるものだと信じて良いと思うが
どういう実装が効率的であるかは実行環境の事情による。
たとえばメモリ管理がページ単位というのは普通のことだし
その場合にページ単位より細かく確保したり解放したりしても非効率になる。
常に何もしないというような実装はあまりないと思うけど
解放するほうが非効率だと考えられる状況では
省2
216(1): (ワッチョイ 01c9-6bUV) 2023/06/16(金)12:08 ID:nWXjt7Za0(1) AAS
capacityと OS側からみた空きメモリはまた別かもしれんわけで
アロケーターがOSからじかに要求してる場合もあれば
OSへの要求回数を減らして内部でプールしてやりくりしてるのもあるし
制御したいレイヤーによっては全部自前でやるしかない という落ちにも
217: (ワッチョイ c14e-8sUu) 2023/06/16(金)12:26 ID:B2wRJ7jC0(1) AAS
>>215
まぁ、細かい単位のメモリだったら、実際に開放されているかどうかなんて、ほとんど動作に影響しないとも言えるしね
(未初期化変数の不具合が発覚しづらい、くらいか)
とりあえずshrink_to_fitを呼んでおいて、細かいことは気にしないのが一番かもしれないw
218: (ワッチョイ 934f-q0yD) 2023/06/16(金)12:46 ID:H6XPX5qB0(1) AAS
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててワロ
219: (ワッチョイ d969-2rqm) 2023/06/16(金)15:41 ID:KX+TErXo0(1) AAS
「STLコンテナ以外にも」はSTLコンテナも含むということ
STLコンテナの話をしても何もおかしくない
220: (アウアウウー Sadd-g1CP) 2023/06/16(金)15:43 ID:ly+Q1cW8a(1) AAS
いつものことだが
ほんの最初の数レスで終わってるのに
どうでも良い脱線ほど盛り上がってgdgdレスでスレが延びる
221: (アウアウウー Sadd-Xx8j) 2023/06/16(金)15:46 ID:/DJegtL/a(1) AAS
ほんそれ
回答終了してんのにちんこかゆい
222: (スフッ Sd33-pDI4) 2023/06/16(金)15:49 ID:YNpYq5+wd(1) AAS
>>182 良く読むと
>STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
>最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが
いやいやそもそも「関数とか局所的なスコープ(つまりautoだろ?stackだろ?)で大きいメモリ確保しようなんて思うな」って話なんだよな
223(2): (ワッチョイ e95f-2rqm) 2023/06/16(金)16:09 ID:qgM8i0iT0(1) AAS
ローカルなvectorを置けばヒープ確保されるので「つまりautoだろ?stackだろ?」は
また何か誤解してる人が来たなとしか。
224(1): (ワッチョイ 219b-q0yD) 2023/06/16(金)16:49 ID:ybGonaVE0(1) AAS
reset要らないとか言ってる奴らは結局何なん
225(1): (テテンテンテン MMeb-jufV) 2023/06/16(金)19:32 ID:yx9ngvFiM(1) AAS
>>224
結論は>211にまとめといた。
resetは要らん。
226(1): (ワッチョイ 92dc-gfWY) 2023/06/17(土)08:56 ID:3MnK6eEg0(1) AAS
>>223
「STLコンテナ以外にも」という文言が読めてない文盲さんたちがvectorの話ばっかしててωωω
227(1): (テテンテンテン MM96-Axrn) 2023/06/17(土)10:36 ID:koF9X0k9M(1) AAS
>>226
「大きいメモリが割り当てられてるオブジェクトを使用後に破棄したい」なら
>185か>187。
>187はunique ptrの置き場所と解放タイミングによって解放の仕方が違って、自動変数にして関数やスコープから抜けるタイミングで解放するなら手動操作不要、vectorなどのヒープに置くとかスコープの終わり前に解放したいとかならreset()とかvectorの要素削除とかで手動解放。
いずれにしても、自動変数に巨大インスタンスを考え無しに置くのは悪手で、そのオブジェクトがスタックに巨大データを置かない(ヒープ等に置く)ことを確認してからにしたほうがいい。
228: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:30 ID:S+64vkUJ0(1/4) AAS
>>216
vectorのcapacityはそのvectorが氏ぬかcapacity縮小アクションが生じない限りvector固有に占有されるから
capacity(のうちsize()を超える分)と OS側からみた空きメモリはまた別でケテーイ……
一方malloc()がOSからゲットしたメモリをOSに返さずにいるのはOS側からみた空きメモリではないにしろ
同一プロセス内の他のオブジェクトの構築に使えるのだから空きメモリのうち
これすらもOSに返したいということならこの流れの中で現状答えがでていないキモヌ
229: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:31 ID:S+64vkUJ0(2/4) AAS
まあしいて言えばプロセスを一旦exitして再立ち上げ?
230: (ワッチョイ 6128-l8k0) 2023/06/17(土)15:45 ID:S+64vkUJ0(3/4) AAS
普通に作ったら(コードで明示的に直接OSのAPIでメモリを分捕って解放とかしない限りは
プロセスのprivate bytesはプロセスが氏ぬまで増えることはあっても減ることは無いという印象、
231(2): (ワッチョイ 7d9b-trtU) 2023/06/17(土)16:27 ID:5e+acAEX0(1) AAS
>>225
スマンまじで理解できないのだけど、なぜvectorに限った話をしてるの?
232: (テテンテンテン MM96-Axrn) 2023/06/17(土)19:22 ID:mYwWSuEFM(1) AAS
>>231
巨大インスタンスは>227
233: (ワッチョイ d9ab-trtU) 2023/06/17(土)19:29 ID:HtrmHz3i0(1) AAS
回答者のレベル低いな~~~
こんだけダラダラ続けて、結局質問者>>182が>>190で早々に結論づけてることをリピートしてるだけw
234: (ワッチョイ 69f0-J7ro) 2023/06/17(土)19:54 ID:9hSxsWrs0(1) AAS
アロケータ気に入らないなら自作くらいしろよポンコツ
なにもかもSTLに頼りやがってそれでPGやってるつもりになるなよ
235: (ワッチョイ 6128-l8k0) 2023/06/17(土)20:19 ID:S+64vkUJ0(4/4) AAS
人類には早すぎた話題また……
236: (オイコラミネオ MM91-L1I+) 2023/06/17(土)23:14 ID:H9lc23A5M(1) AAS
次世代の人は便利に使いこなしてるかより簡素になった仕組みを使うのだろう
237(1): (ワッチョイ 655f-rdTE) 2023/06/18(日)03:00 ID:GIMFAM+a0(1) AAS
>>231
コンテナの種類を問わない一般的な方法なんてものはないからじゃないですかね
238(1): (ワッチョイ 8101-1tDD) 2023/06/18(日)21:04 ID:VwYqKwPk0(1/4) AAS
以下のコードでaccumulateのとこでコンパイルエラーが起こります
何故か分かります?
#include <iostream>
#include <array>
#include <deque>
#include <exception>
#include <numeric>
省19
239(1): (ワッチョイ 515f-C6j3) 2023/06/18(日)21:45 ID:UCXMUPHB0(1) AAS
>>238 エラーメッセージ見ればたぶん分かる。
240: (ワッチョイ 8101-1tDD) 2023/06/18(日)21:48 ID:VwYqKwPk0(2/4) AAS
>>239
レス有難うございます
まず訂正
-accumulate
+std::accumulate
全部は貼れないですけど大事そうなところ
In file included from /usr/include/c++/12/numeric:62,
省5
241(1): (ワッチョイ 9e81-L1I+) 2023/06/18(日)23:15 ID:w3/xAOT+0(1) AAS
ADLでoperator+が見つからないからかな?
struct Vector : std::array <double, 3> {};
みたいに定義したらいけるのでは
242(1): (ワッチョイ 8101-1tDD) 2023/06/18(日)23:20 ID:VwYqKwPk0(3/4) AAS
>>241
>struct Vector : std::array <double, 3> {};
>みたいに定義したらいけるのでは
通りますね
どういうこと?
243(1): (ワッチョイ 32fb-9xvA) 2023/06/18(日)23:24 ID:bX3uBTIT0(1/2) AAS
std::accumulateが14行目で定義したoperator+を見つけれてないのが原因っぽい。
std::accumulateの第4引数に
[](const Vector& v1, const Vector& v2){ return v1+v2;}
を追加してやるとコンパイルは通る。
14行目のoperator+をstd名前空間に入れてやれば動くにゃ動くけど色々マズいので(調査する分にはいいけど)最終的な解答にはならないかな
244(1): (ワッチョイ 32fb-9xvA) 2023/06/18(日)23:29 ID:bX3uBTIT0(2/2) AAS
>>242
たぶんC++コンパイラはoperator+の候補を検索するときに
Vector( = std::array<double, 3>)と同じ名前空間にあるものしか検索しない
Vectorのクラス定義そのものがグローバル名前空間にあるなら14行目のoperator+を見つけられるけど、
今はVectorの正体はstd::array<...>なのでstd名前空間しか検索しないんだと思う
245(1): (ワッチョイ 8101-1tDD) 2023/06/18(日)23:39 ID:VwYqKwPk0(4/4) AAS
>>243,244
なるほど解説頂きまして有難うございます
グローバルスコープはどっからでも見えて良さそうなものの
何でグローバルスコープの関数を探さないですかね?
246(1): (ワッチョイ a901-UvLK) 2023/06/18(日)23:48 ID:EGGkT3O00(1) AAS
独自のメンバ変数を持たないのなら継承してしまうのも手ではある(ただしコンストラクタやarrayを受け取るキャスト用コンストラクタとか書く必要が出ると思うけど)
ただ、そもそもカスタマイズしたり自分の用途に本当に使いやすいものを作りたいなら、ちゃんと自分で全部書いた方がいいと思うよ
247(1): (ワッチョイ b110-lSMs) 2023/06/19(月)00:42 ID:2lgIrH6A0(1) AAS
>>245
std::accumlateの定義内からだと、その下の方(ユーザーコード)で定義されてるoperator+は見えてないので、グローバル名前空間の探索では見つからない
248(1): (ワッチョイ 8101-1tDD) 2023/06/19(月)00:52 ID:Q4g6N6uX0(1/3) AAS
>>247
std::accumlateが定義されているnumericをincludeする前に
以下のようにグローバルスコープにプロトタイプを置いても
同じようにoperator+が見えてないとエラーが出ます
using Vector = std::array <double, 3>;
Vector operator + (const Vector &lhs, const Vector &rhs);
#include <numeric>
249(1): (ワッチョイ a901-UvLK) 2023/06/19(月)03:40 ID:RYn53SnN0(1/2) AAS
accumlateは関数テンプレートだから実体化される時点でoperator+が見えてりゃOKのはず
言われてる通りADLで対象外なのが問題
250(1): (ワッチョイ 256b-trtU) 2023/06/19(月)05:38 ID:JAsvvATP0(1) AAS
>>237
(スマート)ポインタで持って要らなくなったら明示的にリリースする方法はあらゆるコンテナに対して使えるよね?笑
251(1): (ワッチョイ f59c-Axrn) 2023/06/19(月)08:48 ID:KLBRX38t0(1) AAS
>>250
>>223
252: (ワッチョイ 8101-1tDD) 2023/06/19(月)09:20 ID:Q4g6N6uX0(2/3) AAS
>>249
有難うございます
グローバルスコープに定義した関数が見えないのは
どうしてなんでしょうかね?
それでは全然グローバルじゃないような気がするのですが
規格を決めるときに何か意図があったのでしょうかね?
253(1): (ワッチョイ a901-UvLK) 2023/06/19(月)10:39 ID:RYn53SnN0(2/2) AAS
そもそもが名前空間内(よその演算子と混ざらないように)にある演算子オーバーロードを、外部からでも引数が合えば使えるように(std::operator+(a, b)とか書かないでいいように)するためのルールらしいから
外部の演算子見に行くのは目的に合わんのじゃね
std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、あまりよろしくないやり方しようとしてると考えた方がいい
(だから>>246のように書いた、継承したら一応arrayではなくちゃんとVectorクラスに対する演算子だから通る)
254: (ワッチョイ 8101-1tDD) 2023/06/19(月)11:53 ID:Q4g6N6uX0(3/3) AAS
>>253
>std名前空間内のarrayに外部から勝手に動作を追加しようとしてるんだから、
>あまりよろしくないやり方しようとしてると考えた方がいい
なるほど
たぶんこういう考え方なんでしょうね
255: (ワッチョイ 5efb-+wmN) 2023/06/19(月)12:20 ID:4PINPeBN0(1) AAS
つまりvector<int>を使いなさいということ
256: (ワッチョイ 7d9b-trtU) 2023/06/19(月)12:21 ID:wGtx/iKL0(1) AAS
>>251
安価ミス
257: (アウアウウー Sacd-9XmN) 2023/06/20(火)00:04 ID:YSi65ASja(1) AAS
実引数依存の名前探索、Argument-Dependent Lookup (ADL)は、
Koenig lookup とも言う
「Cプログラミングの落とし穴」の著者、
Koenigが、C++ に入れる事を推奨した
ADLを知っているなら、かなりのプロと言える
258: (ワッチョイ 8101-1tDD) 2023/06/20(火)00:18 ID:vGfe0Eju0(1/7) AAS
勉強になります
259: (アウアウウー Sacd-9XmN) 2023/06/20(火)02:12 ID:1vctBLGTa(1) AAS
演算子のオーバーロードなら、フレンド関数とか?
非メンバの演算子オーバーロード | Programming Place Plus C++編【言語解説】 第35章
外部リンク[html]:programming-place.net
260(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)10:05 ID:IIzrqfbq0(1/5) AAS
状況を簡略化するとこう。
namespace ns {
struct foo {};
template <class T>
void bar(const T&) {
T() + T();
} };
省15
261(1): (ワッチョイ 8101-1tDD) 2023/06/20(火)10:53 ID:vGfe0Eju0(2/7) AAS
>>260
>だから順序を変えれば通る。
最近手元のg++を更新しまして10.2.1 -> 12.2.0になったんですが
前者のケースが通らなくなりまして疑問に思っていたところでした
10.2.1は寛容で両方とも通るけどC++的には後者のみ通るのが正しい?
262: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)11:41 ID:IIzrqfbq0(2/5) AAS
>>261
前者はたぶん未定義かつ診断不要な状況なのでエラーを検出せずに通すのも正しい挙動で
プログラマがそういう状況を作ってしまうのが仕様に反する (というか結果が保証されない) という解釈になると思う。
263: (ワッチョイ 8101-1tDD) 2023/06/20(火)13:36 ID:vGfe0Eju0(3/7) AAS
なるほどー
有難うございます
264(2): (JP 0H91-FhUT) 2023/06/20(火)21:39 ID:Pk8V/jejH(1/4) AAS
template<typename Callback>
void func(Callback cb)
{
//cb(1); // A
//cb(1,2);// B
}
void f1(int){}
省4
265: (ワッチョイ 515f-9XmN) 2023/06/20(火)22:18 ID:Cuq1USIJ0(1) AAS
is_invocableでおk
266(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)22:21 ID:IIzrqfbq0(3/5) AAS
>>264
渡されたコールバック関数の引数の数によって区別するってこと?
素朴な方法だとオーバーロードするのが手っ取り早いと思う。
void func(void (*cb)(int)) {
cb(1);
}
void func(void (*cb)(int, int)) {
省8
267: (ワッチョイ 8101-1tDD) 2023/06/20(火)22:27 ID:vGfe0Eju0(4/7) AAS
>>264
template<typename Callback> void func(Callback cb);
template <> void func(void (*cb) (int))
{
(*cb)(1); // A
}
template <> void func(void (*cb) (int, int))
省6
268: (ワッチョイ 8101-1tDD) 2023/06/20(火)22:29 ID:vGfe0Eju0(5/7) AAS
templateが意味ないね
269(4): (ワッチョイ 127f-L1I+) 2023/06/20(火)22:39 ID:ui/rWsWf0(1) AAS
265が言うようにis_invocable使うとこんな感じ?
template<typename Callback>
void func(Callback cb)
{
if constexpr (std::is_invocable_v<Callback, int>) {
cb(1);
} else if constexpr (std::is_invocable_v<Callback, int, int>) {
省3
270(1): (ワッチョイ 8101-1tDD) 2023/06/20(火)22:41 ID:vGfe0Eju0(6/7) AAS
>>269
これって関係ないif節はコンパイル時に消えるの?
271(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)22:43 ID:IIzrqfbq0(4/5) AAS
>>270
消えるよ。
272(1): (JP 0H91-FhUT) 2023/06/20(火)22:44 ID:Pk8V/jejH(2/4) AAS
>>269
ありがとうございます。
gcc 13.1.0 でc++17でうまくいきました。
後出しで申し訳ありませんが、C++14でかけませんか?
273(1): (ワッチョイ 8101-1tDD) 2023/06/20(火)22:47 ID:vGfe0Eju0(7/7) AAS
>>269,271
これは知らんかった
勉強になるなぁ
274(1): (JP 0H91-FhUT) 2023/06/20(火)22:48 ID:Pk8V/jejH(3/4) AAS
>>269
まさにこれをやりたかったです。
template<typename Callback>
void func(Callback cb)
{
// こことか
if constexpr (std::is_invocable_v<Callback, int>) {
省6
275(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/20(火)22:59 ID:IIzrqfbq0(5/5) AAS
>>272 >>274
ひとつの関数テンプレート中でやりたいってこと?
if constexpr が導入される前だとオーバーロードなり特殊化なりで
別の関数として分離しないと書けないと思う。
is_invocable に相当するものは自分で書こうと思えば書けるが
if constexpr は言語のコアの機能だからどうにもならんし……。
276: (JP 0H91-FhUT) 2023/06/20(火)23:14 ID:Pk8V/jejH(4/4) AAS
>>275
情報ありがとうございます
ご掲示いただいたコードで勉強になりました。
277: (ワッチョイ 69f0-J7ro) 2023/06/20(火)23:42 ID:zCL4VLm70(1/2) AAS
>>273
ザッツcostexprマジック
278: (ワッチョイ 69f0-J7ro) 2023/06/20(火)23:43 ID:zCL4VLm70(2/2) AAS
n抜けてたwコストがかかる演算なのは確かだけどw
constexprマジック!マジック!
279(2): (ワッチョイ 32fb-dYQK) 2023/06/21(水)00:07 ID:2lh42auf0(1/2) AAS
C++11のSFIANE地獄へようこそ
外部リンク:wandbox.org
template関数の実体化が1つだけ成功して、
他が失敗するように仕掛ければ呼び分けは可能。
ただ見ての通り相当面倒なことを書かなきゃならない。
280(1): (ワッチョイ 8101-1tDD) 2023/06/21(水)00:28 ID:CWKUsltc0(1/3) AAS
>>279
>>266と本質的に何が違うのか分からない
解説よろしく
(templateでやってることは無駄なのでは?)
上下前次1-新書関写板覧索設栞歴
あと 722 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s