2011-04-01から1ヶ月間の記事一覧

FDIS の不満点

C++0x の FDIS について、細かい部分で幾つか不満な点が見つかったので、メモしておきます。本来なら FDIS を採択した Madrid meeting 以前に言うべきであった事ばかりで、機を逃した感じですが、 気づいておきながら何も主張しないよりはマシだと思ったので…

post-Madrid mailing が公開された

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/#mailing2011-04最新ドラフトは N3290, N3291 になったようです。 前者は FDIS で、このまま何事もなく承認されれば、そのまま国際標準となる版です。 後者は Working Draft で、今までのドラフト …

新しい enable_if を楽に使うマクロ ETUDE_ENABLE_IF を作ってみた

元ネタ: 本の虫「C++0xにおけるenable_ifの新しい使い方」 Boost の ML で、新しい enable_if の使い方が示されているようです: // Never defined extern void * enabler ; template < typename T, typename std::enable_if< std::is_arithmetic<T>::value >:</t>…

標準ライブラリにおける noexcept 指定の方針(メモ)

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3279.pdfにて、 C++0x の標準ライブラリにおける noexcept 指定の基準が示されたので、以下 適当に和訳。 デストラクタには例外指定を付けない。 その結果として、暗黙に指定された(例外を投げな…

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>…