C++相談室 part166 (759レス)
上下前次1-新
17(1): 15 (ワッチョイ afaa-hOut) 05/05(月)16:19 ID:WDPor1X60(1) AAS
>>16
ありがとうございます。
std::endlの代わりに' '(空白)を使うことはできませんかね
図々しくごめんなさい
18(3): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/05(月)17:57 ID:7tS1Ts+e0(1) AAS
>>17
まさに「諸々に配慮」と述べた部分がそれでね……。
ここで定義した operator<< と元からある operator<< の両方が char を受け取ることが可能なので
どちらを呼び出すべきか曖昧なオーバーロード (ambiguous overload) になってしまっている。
ちゃんとやる場合はここで定義する operator<< が受け取れるのはコンテナに限定しなければならない。
型に制約を付ける真っ当な方法が入ったのは C++20 からなのでそれ以前の C++ でやろうとすると回りくどいんだよ。
C++11 でなるべく簡素に書くとしたらこんな感じかな。
省1
19: (ワッチョイ a701-uYIY) 05/06(火)12:29 ID:tCHDdC6b0(1/3) AAS
>template <class T>
>auto operator<<(std::ostream& os, const T& container_object)
> -> typename std::enable_if<!!sizeof(begin(std::declval<T>()) != end(std::declval<T>())), std::ostream&>::type {
横から何じゃこりゃw
20(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-6RYV) 05/06(火)12:35 ID:SvTeM3j90(1/6) AAS
declval は要らんな。
もっとキッチリしたほうがいいのか簡素にしようか迷ってちょっと変な感じになってる……。
21(1): (ワッチョイ a701-uYIY) 05/06(火)13:03 ID:tCHDdC6b0(2/3) AAS
>>20
いやいや非難ではなく
俺が知っているC++じゃないw
- operatorの前のautoは何ぞ?
- !!演算子?
22(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)13:42 ID:SvTeM3j90(2/6) AAS
>>21
関数名の前に auto を書くと仮引数の後ろに返却値の型を書けるようになる。
つまり -> から { までのところに書いてるのが返却値の型。
従来の書き方では関数の仮引数を返却値の型を決定する文脈では使えないというルールがある。
たとえば
template<class T> decltype(e) foo(const T& e) {return e;}
というようなことは出来ない。 ここで e を参照することは出来ない。
省7
23(1): (ワッチョイ a701-uYIY) 05/06(火)14:29 ID:tCHDdC6b0(3/3) AAS
>>22
解説を有難うございます
返り値を後置する記法のアドバンテージが分かりました
>>18は返り値を後置にしてるけどもこれは必須ではないということね
!!も分かりました(g++-12はなしで通ります)
24(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-x8bn) 05/06(火)16:07 ID:SvTeM3j90(3/6) AAS
>>23
> !!も分かりました(g++-12はなしで通ります)
非型テンプレートパラメータで size_t (sizeof の結果) から bool への変換 (縮小変換) は認められていないはず……
……と思ったらこれには例外があってコンパイル時計算の文脈で実際には情報が欠落しないなら OK。
つまり整数の 0 か 1 のときに限り (型の大きさとしては小さくなる変換であっても) bool に変換が可能。
25(1): (ワッチョイ 1279-k14q) 05/06(火)17:28 ID:GbYxwNEQ0(1) AAS
非0ならtrueやないんか
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;
}
省6
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 の制約を満たすものなんやでという制約を入れることによってそうじゃないものはマッチしないように出来るし、
省1
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に最適化しないんですかね…?
56: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-6RYV) 05/09(金)16:47 ID:U8gSLCWq0(1/2) AAS
constexpr に特有のトリックは constexpr の制限故に生まれたのだから緩和されれば気合いの入った取り組みも要らんようになる。
真っ当な進歩なので文句は言えんがつまらんというのはわかる。
57(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-6RYV) 05/09(金)16:53 ID:U8gSLCWq0(2/2) AAS
>>55
する。
const をつけて定義する変数の初期化子が定数式であるときその変数も定数になるというルールがある。
つまり初期化子が定数式なら const 変数と constexpr 変数は同一の効果をもつ。
58: (ワッチョイ 1202-mpUa) 05/09(金)20:05 ID:gpRG314Y0(4/5) AAS
>>57
そうでしたか
まあ、そうですよね…
59: (ワッチョイ 1202-mpUa) 05/09(金)20:07 ID:gpRG314Y0(5/5) AAS
>>53
陶芸家プログラマーか…
いろんな人がいるもんですね…
60: (ワッチョイ 928b-0urV) 05/09(金)21:48 ID:vpEUNnGu0(1) AAS
あの熱意で平均寿命まで生きていれば・・・
61: はちみつ餃子◆8X2XSCHEME (ワッチョイ 6332-6RYV) 05/10(土)12:01 ID:Mv0kFcWv0(1) AAS
定数まわりはググったり ChatGPT に質問したりしても理解しにくいんじゃないかな。
「定数」という言葉が違う意味で使われていてそれらがひとつの解説に混在したりするのが意味不明になる原因だと思う。
・なんか決め打ちの値という意味
・変更できない変数の意味
・C++ 規格用語としての定数の意味
62: (アウアウウー Sac3-7Zak) 05/10(土)12:14 ID:12iOKYOza(1) AAS
constant number
fixed number
magic number
63(1): デルフォトの名無し (ワッチョイ f34b-k+y7) [mage] 05/11(日)19:59 ID:8gkdAC4l0(1/5) AAS
RustのCargo的なツールってC++にありますか...?
ビルド、依存関係管理等が全部できるオールインワンなやつです。
64(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ f332-ZIVz) 05/11(日)20:12 ID:krziBUoq0(1/2) AAS
>>63
しいていえば Conan が近いと思うがビルド自体は指定したビルドツールに下請けさせる構造になってる。
プロジェクトのビルドをする仕組みが多用なので既存のプロジェクトを Conan の管理化に入れるといった状況を考えると C++ 的にはこうなるのは仕方がない……。
C/C++ では OS (ディストリビューション) のパッケージマネージャでライブラリを管理するのが普通だったので言語の側で統括的に扱うツールという文化が欠けてる。
65: デルフォトの名無し (ワッチョイ f34b-k+y7) [mage] 05/11(日)20:18 ID:8gkdAC4l0(2/5) AAS
>>64
そうなんですね...
今RustやってるんですけどC++も触ってみたいなと思って良さげなのないかなと探してるところなんです...
おすすめのビルドツールは何がありますか?
66(1): (ワッチョイ 03a6-XCeo) 05/11(日)20:21 ID:WWvVAeL50(1/4) AAS
OS提供のヘッダーファイルと連携しないといけないからね
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
67(1): (ワッチョイ f34b-k+y7) 05/11(日)20:25 ID:8gkdAC4l0(3/5) AAS
>>66
OS提供のヘッダーファイル?
どんなのがあるんですかね...
68(1): (ワッチョイ 03a6-XCeo) 05/11(日)20:34 ID:WWvVAeL50(2/4) AAS
>>67
Windows SDKとかUNIX系なら/usr/includeにあるやつとかMacだと/Library/Developerとか
ひとつの環境に複数バージョン同時に入ってたりパスの規則もベンダーごとにばらばらだったり独自の拡張構文が使われてたりで処理系側のツールで吸収しきれるものではなく
自然>>64も言ってるOS側の管理に委ねるという方向に
69: (ワッチョイ f34b-k+y7) 05/11(日)20:42 ID:8gkdAC4l0(4/5) AAS
>>68
えぇ...そうなんですか...
C++にはcargoみたいな便利ツールはない...
OS管理...(´・ω・)
70(1): (ワッチョイ 03a6-XCeo) 05/11(日)20:58 ID:WWvVAeL50(3/4) AAS
別に便利ツール自体がないわけではなく、ライブラリはOS側のパッケージマネージャやcanonやバージョン管理ツールの機能等で揃えて
ビルドはcmakeというメタビルドツールで各OSの持つビルドツール向けの入力ファイルを生成したりということはする
統一感には欠けるしばらばらのものを組み合わせてるから躓く可能性もずっと高いけども
71: (ワッチョイ f34b-k+y7) 05/11(日)21:11 ID:8gkdAC4l0(5/5) AAS
>>70
バラバラなのはちょっとまずいですね...
なんか良さげなのないもんですかね...
72: (ワッチョイ f3d0-stkm) 05/11(日)21:16 ID:/xxB2yrb0(1/2) AAS
あくまで個人の意見だけど、パッケージマネージャーは conan より vcpkg の方が好き
conan はそれ自体が Python のパッケージなので、「リポジトリのルートに Python の仮想環境 (venv) を作る → 仮想環境にConan をインストールする → C++ のライブラリを管理する」の流れになるのがね…って気持ちになるかも
どちらにせよ conan や vcpkg は外部ライブラリの管理だけに使うもので、ビルドは cmake を使う
C++だとライブラリ間に依存関係があるものは少ないから、 Git のサブモジュールを使うとか、 clone したソースファイルをそのままプロジェクトに入れるとかする方法もある (綺麗ではないけど)
PythonのpipやRustのCargoがやってるような、バージョンを考慮した依存の解決はしなくて済むことが多い
73: はちみつ餃子◆8X2XSCHEME (ワッチョイ f332-G5I0) 05/11(日)21:17 ID:krziBUoq0(2/2) AAS
色々と事情はあるけどファイル数個で収まる程度 (初心者が書く程度) のプログラムならビルドツールがどうこう考える必要もないよ。コンパイラドライバを呼び出せばそれで終わり。
ファイルが増えたりサポートする実行環境が増えて手に負えなくなったときに続きを考えたら良い。
74(1): (ワッチョイ f3d0-stkm) 05/11(日)21:17 ID:/xxB2yrb0(2/2) AAS
リンク先の画像見てのようなミームがあるけど、残念ながらC++は割と本当にこの通りなんだよね…
Rustがめっちゃ楽なのはよく分かる
外部リンク:www.reddit.com
75(1): (ワッチョイ 03a6-XCeo) 05/11(日)22:02 ID:WWvVAeL50(4/4) AAS
自分の手元でさえビルドできればそれでいいなら統合開発環境に任せてしまう手も。何も考えなくても1クリックで最適にビルドしてくれるよ
76: (ワッチョイ 6f51-c72B) 05/11(日)22:18 ID:jee+W1o20(1) AAS
c++やるなら苦労経験した方がええやろ
77(1): (アウアウウー Sa67-lDqI) 05/12(月)11:10 ID:zCv6/zTua(1/4) AAS
>>74
まるでCargoでbuildが絶対失敗しないかの様な言い草ですね
78: (アウアウウー Sa67-lDqI) 05/12(月)11:11 ID:zCv6/zTua(2/4) AAS
>>75
C++が初めてならそれで良いと思う
79: (ベーイモ MMff-s4bX) 05/12(月)11:12 ID:pU5GgKWjM(1) AAS
>>77
少なくとも意味不明なリンカエラーは滅多にない
80: (アウアウウー Sa67-lDqI) 05/12(月)11:24 ID:zCv6/zTua(3/4) AAS
「意味不明」は属人的な基準だけどね
81: (ワッチョイ c301-1AMC) 05/12(月)12:54 ID:jJ1cTx1K0(1) AAS
cargoがC++の抱えている問題を解決するなら作れば良いじゃないの?
違うと思うがね
82: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0342-G5I0) 05/12(月)14:54 ID:xBm4wuRJ0(1) AAS
外部リンク:xkcd.com
83: (アウアウウー Sa67-lDqI) 05/12(月)15:05 ID:zCv6/zTua(4/4) AAS
これは最近観た覚えがあるな
画像リンク[png]:imgs.xkcd.com
電気電子板かな
84: (ワッチョイ e33b-vmxD) 05/13(火)07:33 ID:2aiUGKe50(1) AAS
幻聴で半分人間半分AIと話していたので
1 私に成りすまして話しているようにいさせている
2 成りすましの声でも身体攻撃の部分は私本人も同じ状態に陥っている
3 犯人が使用していたとしても清廉潔白の人物のように見せれる
【2025年最新】自然な声の音声読み上げソフト5選!AI技術で ...
外部リンク:ondoku3.com
※インストール不要で無料で5000文字まで複数声質の音声合成エンジンで読み上げ可能
省10
85: (ワッチョイ ffca-vmxD) 05/14(水)13:33 ID:tetNkY+Z0(1) AAS
AIチャットボットに「偽の記憶」を植え付けることで仮想通貨を盗む攻撃が報告される
2025年05月14日 12時00分
外部リンク:gigazine.net
>>プリンストン大学の研究チーム
過去に流通した誤情報に接触した人の半分が「正しい情報」と思っていて25%が何らかの手段で拡散している
2025年05月14日 11時25分
外部リンク:gigazine.net
省1
86(1): (ワッチョイ e30c-vmxD) 05/14(水)17:34 ID:Ga6mti+e0(1) AAS
5次方程式に新公式を発見:ルートを超える新理論
2025.05.14 17:05:56 WEDNESDAY
外部リンク:nazology.kusuguru.co.jp
>>オーストラリアのニューサウスウェールズ大学(UNSW)で行われた研究
プログらまーも覚えるとよい
125年越しに解決したかもしれない「ヒルベルトの第6問題」とは?
2025年05月10日 15時00分
省1
87: (ワッチョイ e3bd-vmxD) 05/15(木)13:13 ID:CpSZjLrm0(1) AAS
Googleが開発した進化的AI「AlphaEvolve」は未知のアルゴリズムや未解決数学問題の新解法を発見可能、すでにGoogle内部ではAI開発やチップ設計の効率化に活用されている
2025年05月15日 11時06分
外部リンク:gigazine.net
88: (ワッチョイ 9384-K4wS) 05/15(木)19:21 ID:7jfRA8C50(1) AAS
>>86
スレチ
89(5): (ワッチョイ 2308-s4bX) 05/17(土)00:38 ID:+G5mL4qu0(1) AAS
C++でラムダ式をコンストラクタで受け取るにはどうすればいいの?
std::function使ってもエラーでる
90: (ワッチョイ 6f7a-c72B) 05/17(土)07:04 ID:S33C25YC0(1) AAS
コード書けや無能
91: (ワッチョイ e33b-vmxD) 05/17(土)07:06 ID:XtHNXmhB0(1) AAS
科学 + 5ch
20種近くも検出された新しい「量子状態」は、量子コンピューター飛躍の鍵になるか [すらいむ★]
2025/05/16(金) 22:52:02.48
2chスレ:scienceplus
>>これまで理論上の存在と考えられてきた量子状態の検出に、国際研究チームが初めて成功した。量子情報の保存や論理演算の基盤として応用することで、量子コンピューターの未来を変える鍵となるかもしれない。
※犯罪の手口が判明するのか
92: (ササクッテロラ Sp87-k+y7) 05/17(土)12:05 ID:CPA3cOCvp(1) AAS
>>89
functionで受け取れないなら関数の型が違う
それかtemplate <typename T>で受け取れ
93(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 03fe-G5I0) 05/17(土)12:36 ID:Z8hx0US+0(1) AAS
>>89
なにか間違っているのだからどこが間違っているのか調べるために充分な情報が提示されないと応えられない。
質問者は理解できてきないから質問しているので質問の内容や前提が根本からあてにならず、とにもかくにもまずはコードとエラーメッセージを出してもらわないと始まらない。
そのときなるべく抜粋せずに全て出すのが望ましい。
94(1): (ワッチョイ b301-EQi3) 05/18(日)00:04 ID:2dlUsl+c0(1/2) AAS
>>89
#include <functional>
#include <iostream>
struct Hoge {
Hoge (const std::function <void ()> &f) {f ();}
};
int main () {
省4
95(2): (ワッチョイ 8be4-Od/L) 05/18(日)01:52 ID:1CgD4IwZ0(1) AAS
>>94
自分の場合は7行目で
Hoge hoge = [] {std::cout << "hoge\n";};
のように書いてエラーとなってます。
このCのような初期化構文はコンストラクタの呼び出しを行わないのでしょうか?
ちなみにこのレスように書いたらエラーが消えました
96: はちみつ餃子◆8X2XSCHEME (ワッチョイ 5f32-lpF9) 05/18(日)02:11 ID:NJShdjf50(1/3) AAS
>>95
それは直接初期化とコピー初期化の違い、そして暗黙の型変換の仕組みによる。
Hoge hoge = [] {std::cout << "hoge\n";};
と書いた場合にはこのラムダ式 (が生成するクロージャ) から Hoge 型へ暗黙の型変換が試みられるが、そのような変換コンストラクタはないので失敗する。
暗黙の型変換は原則として多段には行われないので クロージャ → Hoge の変換を探すけど無いってことね。
クロージャ → std::function → Hoge という段階を踏んでくれない。
直接初期化の形式で書いた場合に起こる暗黙の変換は クロージャ → std::function だけだから通る。
97(1): (アウアウウー Sa2f-/ppz) 05/18(日)03:38 ID:qmGnnS9ca(1) AAS
copy constructor
move constructor
どっちも描こう
上下前次1-新書関写板覧索設栞歴
あと 662 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s