2011-04-05から1日間の記事一覧

noexcept operator が gcc-4.6.0 で正しく SFINAE されない件

gcc-4.6.0 では、以下のコードが正しくコンパイルされてしまう。 template<class T> T&& declval() noexcept; template< class T > inline void f1( T& x ) noexcept( noexcept( declval<T&>().foo() ) ) { x.foo(); } template< class T, bool Noexcept = noexcept( decl</t&></class>…

noexcept を(半ば強引に)エミュレーションするマクロ

エミュレーションすると言っても、基本的に常時 false ですが: #include <boost/config.hpp> #ifdef BOOST_NO_NOEXCEPT // 今のところそんなマクロ無いけど #define NOEXCEPT(expr) ( sizeof( (void)( expr ), 0 ) < 0 ) #define NOEXCEPT_IF(expr) #define NOTHROW #else #de</boost/config.hpp>…