C++相談室 part166 (607レス)
上下前次1-新
26: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)18:05 ID:SvTeM3j90(4/6) AAS
>>25
せやで。 こういうときは変換されない。
template<bool num>
class foo {};
int main(void) {
foo<2> bar;
}
通常の暗黙の変換で許されていても非型テンプレートパラメタでは縮小変換はされないので↓みたいなのも駄目。
template<unsigned char num>
class foo {};
省3
27(1): 15 (ワッチョイ afaa-hOut) 05/06(火)18:35 ID:jhNAw2EC0(1/2) AAS
>>18
重ね重ねありがとうございます。
なんとか理解してみます。
C++20だとどうなります?
一応、C++の新機能ってぺージ見たんですけど、よくんからなくて
28: (アウアウウー Sac3-7Zak) 05/06(火)18:36 ID:nZOyiL0Ra(1) AAS
enable_ifは便利だけど使ったら負け感が半端無い
29(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)19:26 ID:SvTeM3j90(5/6) AAS
この場合は enable_if は本来の意味で使ってないしな。
30(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)20:07 ID:SvTeM3j90(6/6) AAS
>>27
こんな感じかな。
外部リンク:wandbox.org
C++20 からはイテレータの概念も再編されて range という概念で扱うのが好ましいということになり、コンテナは range の一種だったことになった。
コンテナの中のここからここまでという範囲を表すものを中心にした考え方で、コンテナ自身も range だし、コンテナの除き窓のような view も range 。
Rust とか Go で言うスライスみたいなもん。
で、テンプレート引数として受け取った T が std::ranges::range の制約を満たすものなんやでという制約を入れることによってそうじゃないものはマッチしないように出来るし、
他の operator<< の候補にマッチするものがあるのならそっちが選ばれるようになる。
31: 15 (ワッチョイ afaa-hOut) 05/06(火)21:47 ID:jhNAw2EC0(2/2) AAS
>>30
ありがとうございます。
rangeはときどき見てたんですけど、ぱっと見あんまり必要性がわからなかったんですけど、こういう理由があったんですね。
これから時間があるときは、rangeを意識して書きたいと思います。
ありがとうございました
32(1): (ワッチョイ df01-7ORQ) 05/07(水)09:06 ID:pa9hjTXM0(1) AAS
>>29
ostreamあんま詳しくないので本来の意味じゃないってのが良くわからんかった
コンテナでなければ弾くようにしてるんだと思うけどsizeofで括ってるのは式自体が評価されないようにするため?
33: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/07(水)09:38 ID:jrPMMEx+0(1/4) AAS
>>32
そう。
実態としては sizeof の中の式が成立するかどうかだけが判定基準になってる。
sizeof が 0 を返すことはあり得ないわけだし sizeof の中の式が成立しないなら enable_if で判定する以前に弾かれるわけなので enable_if は判定の役に立ってない。
式を書く場所があるならなんでもよかったんだけど最終的には ostream& になってもらわないといけないので enable_if が楽だったというだけ。
34: (ササクッテロラ Spc7-7ORQ) 05/07(水)09:53 ID:zHwjwbR2p(1) AAS
あーなるほど、意味がわかった
ありがとう
35(3): (ワッチョイ 1202-mpUa) 05/07(水)22:31 ID:OFqp/W1O0(1/2) AAS
vectorって、
宣言時に、要素数と初期値を設定できないっけ?
気持ちとしては、、
↓
vector<int> my_data(3) = { 6, 8, 44 };
36(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/07(水)22:42 ID:jrPMMEx+0(2/4) AAS
>>35
できない。
そうしたい理由としては指定した個数分の要素が間違いなく与えられているようにってこと?
37: (ワッチョイ a701-uYIY) 05/07(水)22:57 ID:F57QgFhN0(1) AAS
>>35
arrayはそれに近いな
array<int, 3> my_data = {6, 8, 44};
38(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/07(水)23:14 ID:jrPMMEx+0(3/4) AAS
>>35
与えている要素の個数に間違いがないことを確実にしたいというのが目的だとしたらこういう関数を定義するのはどうだろう。
外部リンク:wandbox.org
39(1): (ワッチョイ 1202-mpUa) 05/07(水)23:14 ID:OFqp/W1O0(2/2) AAS
>>36
まあ、普通の配列なら、
int my_data[3]= { 6, 8, 44 };
ってできるので。
できても問題は無さそうだけど…
40: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/07(水)23:25 ID:jrPMMEx+0(4/4) AAS
>>39
文法の一貫性としてということ?
配列をそう定義したときの [3] は型の一部であってコンストラクタに渡す値ではないから……。
配列をそう書けるのが例外的、変則的な措置だと考えるべきだと思う。
41(1): (JP 0Hee-L4A6) 05/08(木)00:57 ID:4oP42WaSH(1/3) AAS
>>20
decvalは要る。お前さんは数値計算知らん。
型拡張で重要になるぞ。
42: (JP 0Hee-L4A6) 05/08(木)01:50 ID:4oP42WaSH(2/3) AAS
はちみつさんはC++仕様策定委員なの?
委員会でそんな発言されたら困るよ。
今さらtraitsみたいなトリック
使いたくないよ。
43(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-6RYV) 05/08(木)02:01 ID:aAWkv5hi0(1/3) AAS
>>41
何を言ってるんだ? >>18 で declval を使ったのが無意味だという話をしてるんだぞ。
44(1): (ワッチョイ 1202-mpUa) 05/08(木)03:34 ID:JGiTQ1yK0(1/2) AAS
>>38
これでできましたね。
(... && is_convertible_v<U, T>)ってなんでしょうか?
(可変個引数Uが存在してって意味?)
45(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/08(木)08:59 ID:aAWkv5hi0(2/3) AAS
>>44
それは特に裏の意味はないよ。
全ての U が T に変換可能 (convertible) であるという制約を入れてる。
46: (JP 0Hee-L4A6) 05/08(木)11:19 ID:4oP42WaSH(3/3) AAS
>>43
そうでしたか。すみませんでした。
47(1): (ワッチョイ 1202-mpUa) 05/08(木)19:02 ID:JGiTQ1yK0(2/2) AAS
>>45
そうでしたか
難しいですね…
48: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/08(木)20:09 ID:aAWkv5hi0(3/3) AAS
>>47
難しい (分かり難い) と感じる部分を具体的に説明できる?
49(2): (ワッチョイ 1202-mpUa) 05/09(金)02:43 ID:gpRG314Y0(1/5) AAS
templeteでフォボナっちみたいのって、
実際に何に使うのかね…?
template<int n>
struct fibonacci
{
static constexpr int value = fibonacci<n-1>::value + fibonacci<n-2>::value;
};
50: (ワッチョイ af58-Enlg) 05/09(金)07:07 ID:+l+evNW70(1) AAS
もう見抜けない、最先端のAIディープフェイク動画は心臓の鼓動まで再現、判別が困難に
2025-05-08
外部リンク[html]:karapaia.com
51(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ cf30-6RYV) 05/09(金)09:22 ID:NaCqAF6G0(1) AAS
>>49
暗号関係などで用途はあると思うけど今なら関数 (costexpr) で定義したほうがいいな。
52(1): (ワッチョイ f7a6-b4kn) 05/09(金)11:24 ID:3QJ66PDO0(1) AAS
>>49
定数の計算を全部コンパイル時にやっちまおうぜというのが流行った時期があった
それでtemplateの目的外使用が過ぎたためにconstexprができた
53(1): (ワッチョイ 637c-pXdp) 05/09(金)15:56 ID:z5xnEJE80(1) AAS
ボレロさんが生きてた頃に比べるとつまんなくなったなconstexprさん
54: (ワッチョイ 1202-mpUa) 05/09(金)16:41 ID:gpRG314Y0(2/5) AAS
>>51
はちみつ餃子さんは何系のプログラマーでしょうか?
組み込み系?
55(1): (ワッチョイ 1202-mpUa) 05/09(金)16:43 ID:gpRG314Y0(3/5) AAS
>>52
ところで、
なんでコンパイラ側で、constを自動でconstexpに最適化しないんですかね…?
上下前次1-新書関写板覧索設栞歴
あと 552 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s