【C++】template 統合スレ -- STL/Boost/Loki, etc.
491 :
デフォルトの名無しさん:
boostのsmart_ptr全般で、boolへの暗黙の型変換をするとき、
なんでこんなヘンなことやってるの?
operator bool()ではいけないんですか?
// implicit conversion to "bool"
typedef T * (this_type::*unspecified_bool_type)() const;
operator unspecified_bool_type() const // never throws
{
return ptr == 0? 0: &this_type::get;
}
いや、最近のニュー速は本当に良くなってきたと思うよ。
ニュース速報板だからね。
・・・横槍。
削除依頼を内容証明以外の方法で行っても有効ですが、条理が根拠ではありません。
意思表示の一般原則であり自明のことです。
免責の対象にはならないから安心してください。
>>491 smart_ptr p;
int x = p + 1;
こんなクソコード書く奴にコンパイルエラーを叩きつけるため。
gannbattekudasai
>>494 おっと、入れ違い。
そうか、intになってしまったら*+-/なんかの演算子が許されるのか・・・
今改めてそのスレッド追うの面倒なので記憶に頼って書くけど、
> ・private:operator int()してもダメ。->なんで?
これは結構いいんでない?という結論になったのでなかったか。
smart_ptr p;
cout << p << endl;
がコンパイル通ってbool値を表示してしまうという問題はあるけれど。