tag:blogger.com,1999:blog-3636872937372639901.post6495949179578802365..comments2024-03-27T21:24:43.584+09:00Comments on 本の虫: C++0xのすんばらしいSFINAE江添亮http://www.blogger.com/profile/13387122818743087721noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-3636872937372639901.post-14887103530222563092014-10-18T02:51:46.559+09:002014-10-18T02:51:46.559+09:00最近プログラミングを勉強し始めたもので、いつも参考にさせて頂いています。
5年も前の記事にコメントと...最近プログラミングを勉強し始めたもので、いつも参考にさせて頂いています。<br />5年も前の記事にコメントというのもなんなのですが、引数を指定すると少し不自由があるかもしれませんね。<br />intとdoubleなど、暗黙の変換が可能であれば意図しない結果が帰ってくることがありそうです。<br /><br />template // 第二引数以降は特定のメンバ関数の引数の指定<br />struct has_hoge<br />{<br />private:<br /> template <br /> static auto confirm( U u, Args... args ) -> decltype( u.hoge( args... ), std::true_type() );<br /> static std::false_type confirm( ... );<br />public:<br /> enum : bool { value = decltype( confirm( std::declval(), std::declval()... ) )::value };<br />};<br /><br />struct hage { void hoge( double ); };<br />struct huge { template void hoge( T ); };<br /><br />int main()<br />{<br /> has_hoge::value; // true<br /> has_hoge::value; // true<br />}lesnoreply@blogger.com