C++

AStyleをハックした

C++

AStyle(Artistic Style - Index)でC++のラムダ式をまともに扱えるようにパッチ書いた。パッチはこの辺。SVN Headにapplyしてください。

Boost.勉強会 #8 大阪 で喋ってきました +新見観光のおまけつき

移動記録 2/10 住居探しのために前日入り。 607- 都城→鹿児島中央 758- 鹿児島中央→新大阪 1330- 不動産屋で空家探し 1900- 大阪の触手他7名で前夜祭 2/12 徒歩移動のみ。 1100- 本編 1800- 懇親会 2/12 新見市の縄文土器展のついでに鍾乳洞めぐり。 745- 大…

Lazy Function/Qi Placeholder に頼らない Semantic Action の作り方

解説とか面倒なのでコード片だけ http://ideone.com/0nuSEfusion::vector が qi::_1, qi:_2, ... に、fusion::at_c(ctx.attributes) が qi::_val に、pass が qi::_pass に対応してます。 結論 Lazy Function使いましょう。

'11年代のMPL

この記事はC++11 Advent Calendar 2011の参加記事です。※注: やたらと長いコードが貼ってありますが、実装についての解説は無いので読み飛ばしてください。 Boost.MPL Boost.MPLはBoostを使っている人なら(魔クロ界の住人を除く)ほぼ全員が間接的にお世話に…

boost::lexical_castの涙ぐましい最適化

この記事はBoost Advent Calendar 2011の参加記事です。本稿では、Boostのコンポーネントの一つ、lexical_castの涙ぐましい最適化について解説します。 lexical_castとは この辺見てください。 安直な実装 まずは一番簡単な実装から見ていきましょう。 templ…

Boost.勉強会 #6 札幌 で喋ってきました

移動記録 11/4 700? - 833 新八代行新幹線リレーバス 849 - 940 さくら404 新八代-博多 947 - 952 福岡市営地下鉄空港線 博多-福岡空港 1110 - 1320 ANA289 FUK-CTS 1319 - 1355 快速エアポート133(7分遅れ) 新千歳空港-札幌 11/6 1155 - 1231 快速エアポー…

プログラミングの魔導書 〜Programmers' Grimoire〜 Vol.2 に寄稿しました

株式会社ロングゲート 買いましょう。

Qt @福岡 第4回勉強会 で喋ってきました

T/O …と言いたいところだけど、いろいろ補足。 各コンテナのパフォーマンス差について 発表中に出したベンチ結果は1千万要素のint(つまり40MB)とかそういうレベルで、ようやく1sec以下の差になろうかという程度です。その程度の差よりは「楽に安全に使う」ほ…

コンテナの要素をセパレータで連結して表示したい

にあるアルゴリズムが便利すぎます…3 Jun, 00:05 update/ ファンクタの引数がintになってたのを修正、ostream_iteratorのcharTをostreamのcharTに合わせて指定するようにした (thanks for id:SubaruG) #include <iterator> #include <numeric> #include <iosfwd> template <typename charT, typename Traits, typename Sep, typename Iter> inline std::</typename></iosfwd></numeric></iterator>…

Boost.勉強会 in 南九州

partake.inとりあえず参加人数の調査です。

std::arrayの要素数を自動推論する

だいぶ前に作ったやつ。どこに置いたか探し回ってしまったので備忘録用に。 https://gist.github.com/657582 forkを辿っていくとid:SubaruG先生を巻き込んで進化の様子がわかります。std::arrayを使うと、各種メンバ関数の追加だけでなく、ポインタへの暗黙…

Boost.勉強会とかいうので喋ってきました

Boost.勉強会 #4 - 加速するデートタイム図書館 -にスピーカとして参加してきました。移動記録 6:00頃 出発、宮崎空港へ 7:35-9:20頃 宮崎-羽田 10:15頃 会場着 18:00頃 懇親会開始 21:00頃 二次会(徹カラ)開始 5:30頃 二次会を抜けて羽田へ 7:30-9:10頃 羽…

クラステンプレートをメタ関数で特殊化したい

C++

Fusion! Boost.Geometry - Togetter ここら辺から派生した話。 素直にenable_ifを使えばできます。ただし複数の特殊化にマッチした場合はambiguousでコンパイルエラー #include <iostream> #include <string> #include <typeinfo> #include <cxxabi.h> #include <stdlib.h> #include <boost/type_traits.hpp> #include <boost/utility/enable_if.hpp> #ifdef __GNUC</boost/utility/enable_if.hpp></boost/type_traits.hpp></stdlib.h></cxxabi.h></typeinfo></string></iostream>…

BOOST_FUSION_ADAPT_STRUCTをちょっと便利に

Boost.FusionのBOOST_FUSION_ADAPT_STRUCTマクロを使うとはユーザ定義型をFusionのシーケンスとして扱えるようにできます(参考:ユーザー定義のクラスをFusionのコンテナ(タプル)として使用する - Faith and Brave - C++で遊ぼう)が、メンバの型をいちいち書…

ポインタは用法用量を守って正しくお使いください

この記事は C++ Advent Calendar jp 2010 の参加記事です。 C++にはポインタ(参照のセマンティクスを持つデータ)がたくさんありますが、悲しいかな生ポインタ(raw pointer/Cのポインタ)が簡単(見た目的な意味で)過ぎて、ほかの便利で安全で高速なポインタは…

Boost.勉強会とかいうので喋ってきました+ついでに高専ロボコン地区大会見てきました

10月23日 Boost.勉強会 #3 関西(大阪府)にスピーカーとして参加してきました。 犬と猫のキメラやマクロ処理に命を懸ける幽霊のように面白おかしく書く能力は持ち合わせていないので、淡々と。 10/22(Fri) 22:40頃- いつもの旅と同じように終電+ドリームにち…

そろそろstd::dequeについて語ろうか

STLの一翼を担うdeque(デックと読むらしい)ですが、その性能に比していまいち知名度が低いようです。 そこで、少しdequeについておさらいしましょう。 dequeの構造 まずは、dequeの期待される内部構造から。 といっても、非常に単純で、std::vector *>とほぼ…

プログラミングの魔導書

[Grimoire]「プログラミングの魔導書」予約開始! - Faith and Brave - C++で遊ぼう 買いました。

プログラミングの魔導書〜Programmers' Grimoire〜

http://longgate.co.jp/products.html 買いましょう。

C++WG AdHoc会議に行ってきました

去る2010-05-29(Sat)に、東京は赤坂で行われたC++WG AdHoc会議にオブサーバとして参加してきました。名前だけでは何をするのかよくわからないですが、平たく言うと事前にまとめられていたコメントを、標準化委員会に送るかどうか、送るならどういう表現にす…

GCC 4.5 リリースノート(続き)

Runtime Library (libstdc++) Improved experimental support for the upcoming ISO C++ standard, C++0x, including: Support for <future>, <functional>, and <random>. Existing facilities now exploit explicit operators and the newly implemented core C++0x features. C++0xサ</random></functional></future>…

GCC 4.5 リリース

GCC 4.5 がリリースされました。 リリースノートの日本語訳です。 Caveats注意 GCC now requires the MPC library in order to build. See the prerequisites page for version requirements.GCCのビルドにはMPCが(訳注:従来のGMP,MPFRに加えて)必要です。必…

ADLは邪悪らしい

TwitterでADLについて語っていたのでそのまとめ。 ADLは基本的に必須の機能。 でもテンプレートと複数の名前空間が絡むと意図しないLookupを起こすことがある。 参考: http://d.hatena.ne.jp/uskz/20060526/p1 意図しないADLを回避するにはネストされた名前…

bindでDeleterを簡略化

昨日のエントリで、boost::bind使えるはずだよ的なことを書いたので、その補足。 #define BOOST_BIND_ENABLE_STDCALL #include <windows.h> #include <boost/shared_ptr.hpp> #include <boost/bind.hpp> template <typename T> struct deref_ptr; template <typename T> struct deref_ptr<T *> { typedef T type; }; using boost::shared_ptr</t></typename></typename></boost/bind.hpp></boost/shared_ptr.hpp></windows.h>…

shared_ptrとHDCとSelectObjectと

「HDCやSelectObjectしたHGDIOBJの寿命管理をするスマートな方法が無いか」という独り言に勝手に答えてみました。 Motivation shared_ptrをマンセーする ctor/dtorのためだけのクラスを作りたくない Approach Win32 HANDLEをboost::shared_ptr (or std::tr1::sha…

BSch3V+Qt

先日から続いていたデスマーチがようやくひと段落したので、かねてより触りたいと思っていたQtで何か作ることにしました。 回路図エディタBSch3VがGPLライセンスでMFC版とQt版があるので、Qt4に移植+フォークさせてみようかと思います。

Boost.Statechart

組み込み機器の制御にBoost.Statechartを使おうとしたら、(案の定)バイナリサイズが膨れ上がってて使えませんでした。 仕方が無いので、自分で再発明します・・・# TODO: Boost.Statechartのチュートリアル(最新版)を和訳する。

C++の多態

# 今日からソフト屋モード。C++の多態は大まかに2系統の表現方法があります。 一つはJavaや.NET等と同じ所謂"オブジェクト指向"な仕組み(継承とvtblによる動的な多態)、 もう一つはC++特有のtemplateによる静的な多態です。今日は(続くかどうかわからない)C+…