な〜にがStrongTypedefじゃ

C++

この記事はC++ Advent Calendar 2012の20日目の記事です. 前の記事 : Boost.Asioによる非同期関数呼び出しと、非同期ノンブロッキングFuture 次の記事 : CEANによる配列操作 導入 ある型に別名を付けるtypedefに対して,ある型を元に新しい型を作る機能をst…

Boost.Preprocessor の可変長マクロ引数対応

これはBoost Advent Calendar 2011の5日目の記事です。さて、Boostも徐々にC++11対応が進んでいまして、その中には当然、Boost内で最も利用されている、超有名かつ超重要、某社のサーバでも利用されているという純粋関数型言語C/C++プリプロセッサ用拡張ライ…

可変長マクロ引数の話

これはC++11 Advent Calendar 2011の4日目の記事です。 C++11ではプリプロセッサが可変長マクロ引数に対応しました。例を挙げましょう。 #define ROTATE(...) ROTATE_I(__VA_ARGS__) #define ROTATE_I(x, ...) __VA_ARGS__, x ROTATE(1, 2) // 2, 1 ROTATE(R…

Boostのドキュメントを個別にビルドするためのメモ

必要なもの: xsltproc docbook-xml docbook-xslt doxygen Boost.Geometry python rapidxml (Boost.Geometryのドキュメントビルドするためのツールのビルドに) ※ROOTをJamrootのあるディレクトリとします。 cd $ROOT ./bootstrap.sh cp bjam $パスの通ってる…

生きてることをアピールするために否定演算子の後置をする

C++

私が成仏した、または地獄送りになったのではないかという疑惑を払拭するために大変どうでもいいコードで更新。 http://www.ideone.com/hXj1y 上のコードは window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.t…

モテるミサ力を磨くための4つの心得

こんにちは、一方マネジメントを専攻しているウチドメ嬢です。私は身長も胸も足りませんしゴーグルもないですが、恋愛に関してはプロフェッショナル。今回は、モテるミサ力を磨くための4つの心得を皆さんにお教えしたいと思います。 1. あえて2〜3世代前のケ…

BOOST_FOREACHに添え字を付けてみた

C++

手段と目的が交差するとき、無駄努力が始まる。 ほしいという声を聞いたので、BOOST_FOEACHという素材を活かす方向でなんとか。 #include <iostream> #include <vector> #include <boost/foreach.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/assign/std/vector.hpp>#define INDEX_FOREACH(elem, cont, n) \ INDEX_FOREACH_I(elem, cont, n, </boost/assign/std/vector.hpp></boost/preprocessor/cat.hpp></boost/foreach.hpp></vector></iostream>…

else節のないifを式でやる

C++

:の片側は適当な式で埋めたconditional-expressionでもいいんだけどこういうのもアリね。 #include <iostream> struct hoge { void f() { std::cout << "hoge\n"; } }; int main() { hoge x; false && ((void)x.f(), 0); // if (false) { x.f(); } std::cout << "-----</iostream>…

Phoenix v3で遊ぶ

日記を書かないと死ぬらしい(ソース不明)ので書きましょう。 Phoenix v3がtrunkにあるということで、前に作ったコードを修正しながら遊んでみました。そういえば前は確かapply作ろうとしたらbindになったとか言いましたが、よく考えたらやっぱりapplyでし…

新しいswitch statementのご案内

前に http://ideone.com/7NnRj というのを書いて、その後パターンマッチとかできればうれしいなーと思ったので、そんなものを書いた。書いてるうちにぼくのかんがえたさいきょうのぱたーんまっち。という記事が先に上がってたのでこれお蔵入りかなーとか思っ…

プリプロセス時足し算・引き算・かけ算・剰余演算を定数時間で

http://ideone.com/eK4vc #include <boost/preprocessor/cat.hpp> #define PP_ADD_C(x, y) PP_NAT_TO_LIT(PP_NAT(x) PP_NAT(y)) #define PP_SUB_C(x, y) PP_COMPL(PP_ADD_C(PP_COMPL(x), y)) #define PP_MUL_C(x, y) PP_NAT_TO_LIT(PP_CST_REPEAT(x, PP_NAT(y))) #define PP_MOD_C(x, y) </boost/preprocessor/cat.hpp>…

fontconfigの設定(1)

fontconfigの設定ぐらい手打ちでできないと人間として認められないそうなので、がんばって調べてみました。しかし折角人間と認められても、数ヶ月後には再び人間でない何かになってしまいそうなので、未来の自分も人間と認められ続けるべく、ここに記録を残…

Unicode, UCS-2/4, UTF-8/16/32についての整理

※注意:これは私が調べた結果をまとめたものなので、間違いがあれば指摘していただけるとありがたいです。 用語 ここで整理したいことについて話せるようにするための説明なので、正確ではないです(符号化文字集合とか符号点とか)。 文字集合 文字の集合 …

vlcをCUIから使う

みなさんごきげんよう。今日も元気にラブライブ!の1stシングル「僕らのLIVE 君とのLIFE」を聞きましょう。 …あぁ、いつもいつもCD挿すのめんどくさいですね。ここはちょいとvorbisあたりに変換してハードディスクに保存してしまいましょう。誰ですかiPodと…

明日から使える boost/preprocessor/facilities/*

C++

やったーC++ Advent Calendarすっかり忘れていました。 今日は数あるBoost.PPのマクロのうち今一つ何がしたいのか分からない連中にスポットを当ててみたいと思います。 BOOST_PP_IS_EMPTY 例えばコンパイルフラグとしてHOGEが定義されていたとします。gcc -D…

最近流行りのアイドル(動画あり・音が鳴ります)

http://gs.dengeki.com/lovelive/ http://www.sunrise-inc.co.jp/lovelive/ http://www.lantis.jp/special/lovelive/ ラブライブ!です。 今のところキャラクターと1stシングルしかないのでアイドルならもっとアイドルっぽくグラビアとか欲しいところです。 …

メタプログラミングの会に行ってきたような気がするような気がしないこともない気がするんじゃないかと思わないこともない気がする

今回はもうめんどいのでtwitterの私の発言をまとめる作業で行きたいですね。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); j…

Boost.勉強会#3で適当なことをしゃべってきました

C++

私の発表資料: http://www.slideshare.net/digitalghost/preprocesstime-lambda-expression ソース: http://patch-tag.com/r/digitalghost/pplambda/home , http://sites.google.com/site/ilikemanaka/code/pplambda.tar.bz2 あぁどうしよう。今回は大阪開…

有界の会の話

今回は節約して夜行バスで行きました(行く前に用事があったり飲んでたりしましたがその話は省略)。 裕福な私は東京行く手段といえばいつも新幹線で、夜行バスとかそんな安物の乗り物は初めてだったのでとりあえず8000円ぐらいの割とゆったりめのヤツにして…

Boostのgit mirrorを見つけました

http://repo.or.cz/w/boost.git svn upとか遅すぎてやってらんねーよボケがという人へ。 git pullで光の速度!!!

新型scope guard

以前にも何回か書いているスコープガードネタですが(これ、これ、これ)、http://d.hatena.ne.jp/faith_and_brave/20100921/1285049653 とか http://d.hatena.ne.jp/gintenlabo/20100921/1285084859 から、なんかtwitterで話のネタになってたので、ちゃんと…

よく分からない話

C++

一つめのアレは実は「え、RVO?」とか思ってたけど、そうかmakeSの呼び出しがRVOされるのかー。 C++.Tのオーバーロード解決の話はなんか void f(int); template<typeid T> where { ConceptA<T> } void f(T); template<typeid T> where { ConceptB<T> } void f(T); template<typeid T> typename en</typeid></t></typeid></t></typeid>…

Boost.勉強会#2にいってきた話を書こうと思うけど、めんどくさいからどうしようか悩んでいる

勉強会で配る用の名刺を作らねばとプリンタのインクと名刺用の紙を買ってきたわけですが、前日の夜にハードディスク整理を始めたから名刺作る時間がなくなってきた上に、家のプリンタが大きすぎて名刺印刷できなかった。やることがあるときに限って掃除をし…

user-defined string literalはliteral operator templateでほげほげできないと何度言ったら…

私自身何度も疑問に思ってはその度に調べていたし、しょっちゅうtwitter上でも話題になるのでここに書いておきましょう。 すごく手短に言うと、 template<char ...str> struct hoge_t {}; template<char ...str> constexpr hoge_t<str...> operator ""_hoge();このような定義(ここではliteral </str...></char></char>…

C++WG Adhoc Conferenceに行ってきました(の書きかけ)

C++

出発〜懇親会まで 5/29、このような会議があるということで、参加させていただきました。 赤坂で10時から、ということで、だいたい3時間半あればいけるかなと思ってそんな感じで時間を見て出発した。お近くのみどりの窓口にて新幹線の指定席の予約を取ろうと…

Xmonadの設定など

Xmonadを導入しようとして設定したこと sudo apt-get xmonad xmobar dmenu ~/.xmonad/xmonad.hs Hackage http://blog.blueblack.net/item_424 のシリーズ http://sites.google.com/site/haskell/notes/xmonad http://b-island.s60.xrea.com/hiki/hiki.cgi?xm…

劇場版 魔法少女リリカルなのはThe MOVIE 1stを見にいきました

なのはさんがフェレットユーノ君をかばって前に出たとき、当然のように彼の位置は明らかに絶妙なポジションでした。初対面の女の子のぱんつを覗こうとするなんて、劇場版でも淫獣っぷりは健在ですね。

C++/CLIについてのよくある誤解

以前にも書いたような気がしますが、もう一度書きます。C++/CLI(仕様の邦訳)は、.netからC++やその他ネイティブコードのライブラリを楽に使えるようにするためと、そのための作業を楽に行うための言語です。「.netで使えるC++」ではありません。そういうこ…

WG21 Paper n3030 Rvalue Reference as "Funny" Lvalues を Background だけ訳した(主に私が理解するため)

そのうち江添さんがきっちりとしたエントリーにするだろうけど、折角途中まで訳したし、背景だけ終わらせて置いときます(一部訳せなかったけど)。間違いとか飛躍しすぎとかがあればコメントなりtwitterなりで教えていただけると、私のえーぶんどっかいりょ…

前に作ったPP_IS_EMPTYの問題点

以前、PP_TUPLE_SIZEを作るために作ったPP_IS_EMPTYがどうなっていたのか思いだしたら、少しばかり問題がありました。 #define FOO(a, b, c) PP_IS_EMPTY(e FOO)eをカンマで区切られていないトークン列として、上記のようなトークン列を引数とすると、置換に…