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

カレントで開いているウィンドウのバッファ名を出力する

こういう処理はあんまり慣れていないので結構時間がかかりました。 [ソース] " カレントのウィンドウ番号の範囲 " winnr("$") で最後のウィンドウ番号を取得する let winnrs = range(1, winnr("$")) " ウィンドウ番号からバッファ番号へ変換 let bufnrs = ma…

gcc 4.7 に Delegating constructors が実装

C++

されていたらしいので試してみました。 gcc 4.7 のバイナリはここのものを使用しました。 [ソース] #include <iostream> struct vec3{ vec3(float x, float y, float z) : x(x), y(y), z(z){} vec3() : vec3(0.0f, 0.0f, 0.0f){} vec3(float f) : vec3(f, f, f){} floa</iostream>…

Boost.Phoenix と decltype を組み合わせる

以前も似たような事をやったんですが、Boost.Phoenix と decltype の組み合わせで面白いことができますね。 [ソース] #include <memory> #include <iostream> #include <boost/mpl/int.hpp> #include <boost/mpl/string.hpp> #include <boost/phoenix.hpp> #include <boost/multi_index/mem_fun.hpp> struct disp_impl{ typedef void result_type; template</boost/multi_index/mem_fun.hpp></boost/phoenix.hpp></boost/mpl/string.hpp></boost/mpl/int.hpp></iostream></memory>

unite.vim で FizzBuzz の出力

vim

ふと、思いついたのでやってみた。 本当は unite-fizzbuzz とか書こうと思ったんだけど、unite-source を書くのがめんどくさかったので、unite-output で…。 unite-output 便利ですね。 [コマンド] :Unite output:for\ i\ in\ range(1,1000)|echo\ i.'\:'.(i…

Sprout.Tuple で transform_view

Sprout 側で処理できるようにゴニョゴニョと拡張してみました。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <functional> #include <sprout/tuple.hpp> #include <sprout/string.hpp> template<typename Tuple, typename F> struct transform_view_tuple{ Tuple tuple; F func; }; namespace sprout{ </typename></sprout/string.hpp></sprout/tuple.hpp></functional>…

Sprout でコンパイル時 FizzBuzz

って事でやってみました。 counting_iterator が欲しくなりますね。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <sprout/algorithm/transform.hpp> #include <sprout/array.hpp> #include <sprout/string.hpp> #include <sprout/string/alias.hpp> #include <sprout/operation.hpp> #include <iostream> templa…</iostream></sprout/operation.hpp></sprout/string/alias.hpp></sprout/string.hpp></sprout/array.hpp></sprout/algorithm/transform.hpp>

【Boost Advent Calendar 2011】phoenix::progress_display【6日目】

これは Boost Advent Calendar 2011 6日目の記事です。 さて、個人的に3回目の Advent Calendar です。 Boost Advent は個人的に気になっている Boost.TTI や Boost.QVM について書こうと思ったんですが、時期的に今しかチャンスが無いのでネタに走ります。 …

Sprout で遊んでみた

C++

今や知らない人はいない空前絶後な超変態ライブラリ、Sprout をちょっと使ってみました。 とりあえず、簡単に itoa の実装でも。 ソースは下記の github にあります。 bolero-MURAKAMI / Sprout - github [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_…

clang 3.0 でエラーメッセージがパワーアップ

clang 2.9 でも『もしかして:〜』という機能があったんですが、clang 3.0 になって更にパワーアップしたらしいです。 [エラーコード] typedef int Integer; int main(){ integer* i = 0; // Integer return 0; } [clang 2.9] main.cpp:6:1: error: use of u…

LLVM 3.0 がリリース

スケジュールより遅れましたが、無事に LLVM 3.0 がリリースされました。 ダウンロードはこちらから。 clang 3.0 で追加される C++11 の機能なんかはここやここら辺を参照して下さい。

【C++11 Advent Calendar 2011】ユーザ定義リテラル【1日目】

C++

これは C++11 Advent Calendar 2011 の1日目の記事です。 1日目の C++11 Advent Calendar 2011 は『ユーザ定義リテラル』ついて書きたいと思います。 出落ちなのは気のせいです。 もし間違っている記述があれば、ご指摘頂けると助かります。 [C++11 Advent C…

【Vim Advent Calendar 2011】Vim の開発環境【1日目】

vim

これは、Vim Advent Calendar 2011 の1日目の記事です。 [Vim Advent Calendar 2011について] 去年の Advent Calendar には Vim がなかったので、勢いで立てました。 たくさんの方にご参加いただきありがとうございます。 開始前に何とか25人集まりました! …