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

マクロでオブジェクト指向

C++

boost::typeofのC++標準における実装の中で使われている 「オブジェクト」とは型名(のようなトークン)の後にデータメンバのインスタンス(のようなトークン)の続いたSequenceと定義する 例: (YOUR_CLASS)(data1)(data2) 「メンバ関数」は型名の後にアンダース…

Boost.PreprocessorのBOOST_PP_FORの実装の概要

マクロは再帰的に呼び出すと展開されないので、その場合は同じ機能を持つ違う名前の(違う数字が後ろについた)マクロを呼び出す boostの実装は、展開されないことを逆手にとって再帰呼び出しを検出し、上記の作業を自動化しているようだ []// if-like[] []// …

Boost.Serializationのリンクの仕方

なぜか明示的なリンクが必要 VC++で「C/C++ → 言語 → wchar_tをビルトイン型として扱う → はい」にするのを忘れないこと 参照:とらいきゃっち・ふぁいなりー []#define[] []BOOST_LIB_NAME[] []boost_serialization[] []// #define BOOST_LIB_DIAGNOSTIC yes…

Boost.Spiritの例(calculator)をBoost.Xpressiveで書ける

spirit::grammar<>のようなフレームワークを使わなくていい SemanticActionも使えるようだ []#include[][] "stdafx.h"[][]#include[][] <iostream>[] []#include[][] <string>[] []#include[][] <boost/iterator.hpp>[] []#include[][] <boost/xpressive/xpressive_static.hpp>[][]// See:[] []// http://www.boost.org/libs/spirit/doc/se</boost/xpressive/xpressive_static.hpp></boost/iterator.hpp></string></iostream>…