[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
63(1): デフォルトの名無しさん [sage] 2016/11/11(金) 01:01:22.47 ID:JQalwGbJ(1/2) AAS
>>6262(2): デフォルトの名無しさん [sage] 2016/11/10(木) 23:41:59.59 ID:AQTsjJgJ(3/3) AAS
>>55の回答はこんな感じでいいだろう
using ptr_type = void *;
std::function<ptr_type ()> f1{ []{ return ptr_type{}; } };
std::function<void *()> f2{ []{ return static_cast<void *>(nullptr); } };
散々煽ってたから聞くけど
static_cast<void *>(nullptr)
このキャスト無駄じゃない?
これは変な例ではないの?
68: デフォルトの名無しさん [sage] 2016/11/11(金) 02:04:25.89 ID:JQalwGbJ(2/2) AAS
>>6565(1): デフォルトの名無しさん [sage] 2016/11/11(金) 01:36:59.83 ID:tUBqvL6G(2/2) AAS
もしくは、ひょっとしたらnullptrには何らかな特殊な型が与えられているのかもしれんが
それはしらないが、ともかくvoid*型ではないのは確かなので
その場合でもstd::function<void *()>への代入で問題を起こすんだろう
nullptrに型が有るのか無いのか、俺は知らんし、興味もないんだけどね
nullptrの型はnullptr_tだよ
だからラムダの戻り値の型はnullptr_tと推論される
ただ問題はvoid *を戻り値としたfunctionに代入できるか
ぶっちゃけ俺も書いてからやっちまったかと思って調べた
規格を調べたところやはり要らなかった
戻り値が暗黙変換できれば代入できると書いてある
つまりラムダの戻り値intでfunctionはdoubleとかもあり
そして当然nullptrはvoid *型に暗黙変換できる
なので要らない
外部リンク:ideone.com
>>6767(2): デフォルトの名無しさん [sage] 2016/11/11(金) 01:56:19.58 ID:v3r+B2af(2/2) AAS
自宅のvs2015communityで実験したところ
std::function<void *(void)> f0 = [](void) { return NULL; };
std::function<void *(void)> f1 = [](void) { return (void *)NULL; };
std::function<void *(void)> f2 = [](void)->void * { return NULL; };
std::function<void *(void)> f3 = [](void) { return nullptr; };
だとf0のみエラーです
gccとかでも同様なんですかね
の結果とも一致する
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.049s