private: operator void() const;

オペレータオーバーロード怖い、というお話。
17
若年寄(もう若くない) @kikairoya

まあ実用上は何の問題も無いでしょう

2010-07-30 23:19:15
若年寄(もう若くない) @kikairoya

@decimalbloat (重箱の隅をつつくレクリエーションという意味で)俺得

2010-07-30 23:20:22
めるぽん.c @melponn

private: template<class T> operator T();

2010-07-30 23:20:50
若年寄(もう若くない) @kikairoya

これでFAかな? RT @decimalbloat: decltype([]()->void {hoge;}(), fuga)

2010-07-30 23:21:27
でちまるさん(実際かわいい) @decimalbloat

コンパイラさんの負担を考えるならsizeof方式のほうが。

2010-07-30 23:22:42
若年寄(もう若くない) @kikairoya

@decimalbloat それはdecltype(hoge)がvoidの時にアウトじゃ

2010-07-30 23:23:07
でちまるさん(実際かわいい) @decimalbloat

あーでもこれだとhogeがvoidの場合悲しいことになるな

2010-07-30 23:23:28
めるぽん.c @melponn

何でちょっと型情報取るだけでこんな苦労せないかんのや・・・

2010-07-30 23:23:34
でちまるさん(実際かわいい) @decimalbloat

decltype(static_cast<void>(sizeof(decltype(hoge)*))), fuga)

2010-07-30 23:24:28
若年寄(もう若くない) @kikairoya

これはwww RT @decimalbloat: decltype(static_cast<void>(sizeof(decltype(hoge)*))), fuga)

2010-07-30 23:25:08
でちまるさん(実際かわいい) @decimalbloat

だめだやはりdecltype([]()->void { hoge; }(), fuga)か?

2010-07-30 23:25:50
若年寄(もう若くない) @kikairoya

適当なテンプレートに入れればいいんじゃないだろうか

2010-07-30 23:26:48
@yutopp

奥が深すぎて奈落の底しか見えない

2010-07-30 23:26:59
でちまるさん(実際かわいい) @decimalbloat

特定の型のときだけとかはMPLとかTypeTraits使えばなんとでもなるけどこの文脈で使ったら負けな気がする。

2010-07-30 23:27:10
めるぽん.c @melponn

void 型の hoge って何なのかよく分かっていない

2010-07-30 23:27:18
若年寄(もう若くない) @kikairoya

decltype(static_cast<void>(identity<decltype(hoge)>), fuga)

2010-07-30 23:27:55
若年寄(もう若くない) @kikairoya

あーでもidentity的な何かって標準に無いんだっけ?

2010-07-30 23:28:29
でちまるさん(実際かわいい) @decimalbloat

@melponn hogeがvoid f(); なる関数からなるf()という式だとすれば、hogeの型はvoidですね。

2010-07-30 23:30:04
若年寄(もう若くない) @kikairoya

まあ別にidentityじゃなくても、add_pointerとかそこら辺の適当なのでおk

2010-07-30 23:30:37