2010-12-31から1日間の記事一覧

Boost.PPでmake_uniqueを実装してみた

(std|boost)::shared_ptrには、それを生成するためのヘルパ関数make_sharedがありますが、std::unique_ptrにはそれに相当するものがありません。そこで、Boost.PPを使って簡単に実装してみました。 make_unique_nvt.hpp #ifndef BOOST_PP_IS_ITERATING #ifnd…

Boost.MPLでBrainfuckインタプリタを実装してみた

やってみました。まず構文木を作っているのでとても長いです。 ソース /* Example: typedef brainfuck::interpret< mpl::string<'+++[', '>,-.', '<-]'>, // Source : +++[>,-.<-] mpl::string<'IBM'> // Input : IBM >::type output; // Output : HAL BOOST…

Boost.MPLでエラトステネスの篩を実装してみた

『C++テンプレートメタプログラミング』を読み始めたので、Boost.MPLでエラトステネスの篩を実装してみました。 コード Pythonで書くところの def sieve(ns): return [ns[0]] + sieve([n for n in ns if n % ns[0]]) if ns else [] を、そのまま(?)C++のコー…