2012-03-01から1ヶ月間の記事一覧

Sprout が破壊的に変更された

Sprout の破壊的変更 - constexpr コンテナのトレイト周りの刷新 - Sprout の破壊的変更 - constexpr コンテナのトレイト周りの刷新 当ブログでもいくつか Sprout のコードを扱っているので参考にする方は注意して下さい。 まぁ constexpr 系中3女子の方はあ…

Vim で BOOST_PP をハイライトする

vim

Twitter で見かけたので書いてみました。 『BOOST_PP』 をプレフィックスとしてハイライトしています。 [vimrc] autocmd Filetype cpp call <SID>boost_pp_syntax() function! s:boost_pp_syntax() syntax match boost_pp /BOOST_PP_[A-Z0-9_]*/ highlight link b</sid>…

test

携帯からの書き込みテスト

vimfiler のデフォルトのマッピング

vim

と、いうのは :help vimfiler-key-mappings 辺りを見れば(もしくは vimfiler 上で ?)書いてあるのですが、まとまっていたほうが分かりやすい+知らないマッピングもあったので一覧にしてみました。 [注意] 2012/03/29 の vimfiler の help を参照して作成し…

clang 3.1(trunk) に Forward declarations for enums が実装された

clang 3.1(trunk) に Forward declarations for enums が実装されました。 C++11 implementation status GIT mirror N2764 C++0x enumの先行宣言 - Faith and Brave - C++で遊ぼう [ソース] template<typename T> struct X{ enum E : T; E n; }; template<typename T> enum X<T>::E : T{</t></typename></typename>…

Vim script の読み込みを途中でやめる

Vim script の覚書。 :finish で Vim script の読み込みを途中で止めます。 [hoge.vim] " Windows 環境であれば Vim script の読み込みを止める if has('win32') || has('win64') :finish endif " 以下、Windows 以外の処理を記述 " ....

vimrc を整理した

vim

Vim を始めた頃から無駄に機能ごとにファイル分割をして、ごちゃごちゃになっていた vimrc をこの機会にちょっと整理してみました。 1つのファイルに全部まとめたので行数は長くなったのですが、使ってなかった設定や quickrun.vim 回りの設定を見直したので…

開発環境(2012/03/25付け)

メインマシン 自作マシン OS:WindowsXP SP3 メモリ:4GB CPU:Intel Core 2 Duo E8400(3.00GHz) GPU:NVIDIA GeForce GTS250 サブマシン(ノートPC) dynabook MX/33LBL(SSD 64GB) OS:Windows 7 Home Premium(32bit) メモリ:2GB CPU:1.3GB 携帯 GALAXY S…

Vim で vimrc が処理される前に呼ぶコマンドをでコマンドライン引数で渡す

vim

Vim の起動時に変数を定義して、vimrc 内で処理したいなーと思い調べてみたら --cmd っていうコマンドオプションがあるみたいですね。 これで vimrc が処理される前にコマンドラインに渡したコマンドが処理されます。 [コマンド] % vim --cmd "let $USERNAME…

c_function の型推論版

C++

をちょっと書いてみました。 [ソース] #include <type_traits> #include <functional> template<typename Unique, typename Func> struct to_function_impl{ template <typename To> operator To() const{ return to(To{}); } template<typename Result, typename ...Args, typename To = Result(*)(Args...)> To to(Result(*)(Args...)) co…</typename></typename></typename></functional></type_traits>

環境変数を path に追加する

vim

PC 間で共有して使う Vim script を書いているんですが、次のような関数があれば便利かなーと思い書いてみました。 [ソース] " path にパスを追加する function! s:add_path(path) if isdirectory(a:path) execute "set path+=".a:path endif endfunction " …

ねんがんのスマートフォンをてにいれた!

って事で時代の流れに乗って買いました。 前の携帯は5年ぐらい使っていたのかな?もう電池があれで起動すら怪しくなっていたんですよね…。 買ったのは au の GALAXY SII WiMAX ISW11SC です。 acro HD とどっちにしようか迷ったんですが、WiMAX + テザリング…

c_function と lambda expressions を組み合わせる

C++

lambdaとdecltypeを組み合わせれば、ユニーク型IDの必要ないc_functionが - 本の虫 さて、c_function と lambda expressions の組み合わせについては上記のサイトを参照してもらえれば分かると思います。 c_function を使用する場合、ユニークな型を使用する…

ねんがんの Windows 7 を手に入れた!

まぁ今時 Windows 7 って感じですが。 知人から Windows 7 が入っている SSD 64GB 付きのノートを格安いで譲ってもらったのでセットアップしています。 SSD なので20秒ぐらいで OS が起動してマジパネェ。 [ソフトウェア] Chrome Git TortoiseGit MinGW LLVM…

Vim のウィンドウをキャプチャする

よくブログに Vim のウィドウをキャプチャした gif を上げているんですが、 「どうやっているの?」 という事を聞かれることがあるのでまとめておきます。 Vim のウィンドウ…と書いてありますが、画面の好きな場所をキャプチャする事が出来ます。 あと対象は…

Vim で Dart の実行環境を書いてみた

最近、何かとよく目にする Dart なのですが、いつの間にか Windows 用の SDK も配布されていたので簡単に Vim でコーディングできるようにしてみました。 実行処理するのは、お馴染みの quickrun.vim です。 [Dart の実行バイナリ] Dart SDK [スニペット] せ…

Vim の改行コードの続き

vim

遠くの方からツッコミが聞こえたのでちと追記。 @ka_ さんからこんな感じの意見を頂いたのでちょっと実装してみました。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(…

Vim の改行コードを unix に変更してみた

vim

今は Windows 環境で作業を行なっているので、Vim の改行コードは dos を使用していたんですが、これだと色々と弊害(unix 系だと dos の改行コードを含んだスクリプトが読み込めない云々)が出てきたので『いっそのこと改行コードは unix に統一してしまえ…

C++11 の Alignment support

そういえば、C++11 で追加される Alignment support の alignas が使えるコンパイラって clang 3.0 だけなんですね。 [ソース] #include <iostream> struct x{ alignas(4) int value; }; int main(){ std::size_t n = alignof(x); std::cout << n << std::endl; std::c</iostream>…

unite-moo

vim

スーパー牛さんパワー! - ぬいぐるみライフ(仮) これは Vim でもやるしかないですね! ってことで unite-source を書きました。 ついでに最近、某A社で牛が暴れているらしいので走らせてみました。 [unite-moo] unite-moo - github :NeoBundle git://github…

名前付きタプルが欲しい

メンバ変数だけのクラスとか定義したくないんじゃー。 と、いうことで Boost.Fusion の map と Boost.MPL の string でやってみた。 [ソース] #include <boost/fusion/include/map.hpp> #include <boost/fusion/include/make_map.hpp> #include <boost/fusion/include/at_key.hpp> #include <boost/mpl/string.hpp> #include <boost/typeof/typeof.hpp> #include </boost/typeof/typeof.hpp></boost/mpl/string.hpp></boost/fusion/include/at_key.hpp></boost/fusion/include/make_map.hpp></boost/fusion/include/map.hpp>

Boost.Context はじめました

最近何かと目にする Boost.Context をちょっとつついてみました [boost] boost-svn - github [ビルド] 最新版の trunk だと今まで通り bjam を叩けばライブラリが生成されるみたいです。 上記の github に上がっているソースだとうまく出力されなかったので…

clang 3.1(trunk) に Universal character names in literals が実装された

user-defined literals の直後に追加されたみたいで気が付きませんでした。 文字列の中に直接文字コードを記述することが出来ます。 C++11 implementation status GIT mirror [ソース] #include <string> #include <cassert> int main(){ char16_t const* s = u"\u307b\u3080</cassert></string>…

文字列ポインタから sprout::string へ変換

sprout::string_from_c_str を使えばいいみたいです。 [ソース] #include <sprout/string.hpp> int main(){ constexpr char const* c_str = "homu"; // sprout::to_string では文字列ポインタから変換出来ない // constexpr auto str = sprout::to_string(c_str); // sprout::st</sprout/string.hpp>…

clang 3.1(trunk) にユーザ定義リテラルが実装された

ねんがんの ゆーざていぎりてらるを てにいれたぞ! [C++11 Implementation status] GIT mirror [ソース] #include <iostream> unsigned long long int operator "" _twice(unsigned long long int n){ return n + n; } template<char... cs> std::size_t operator "" _len(){ retu</char...></iostream>…

ref-lynx つくった

vim

Vim 上で簡単なブラウジングが行える ref-lynx を書きました。 これで Boost ドキュメントを Vim 上で参照する事が出来ます。 内容は ref.vim とはあまり関係ないんですけど色々と都合がよかったので ref.vim の source として書きました。 (というか元々 r…

ラムダを返すラムダの定義

C++

知らなかったので覚書。 ラムダ式の関数ポインタを返すラムダ式 - デジタルちんぶろぐ [ソース] #include <iostream> int main(){ using result_type = void(*)(); using func_type = result_type(*)(); // 戻り値型を定義しないとエラー // func_type f = []{ func_ty</iostream>…

unite-boost-online-doc を trunk に対応させた

vim

unite-boost-online-doc を trunk も参照できるように対応させました。 多分問題ないと思います。 [プラグイン] unite-boost-online-doc - github :NeoBundle "git://github.com/osyo-manga/unite-boost-online-doc.git" [使い方] :Unite boost-online-doc:t…

関数テンプレートのポインタを関数で受け取る

C++

関数テンプレートのポインタを関数に渡す場合、 template<typename T, typename Func> T calc(T a, T b, Func func){ return func(a, b); } template<typename T> T plus(T a, T b){ return a + b; } assert(calc(1, 2, &plus<int>) == 3, ""); // ok assert(calc(1, 2, &plus) == 3, ""); // error こん</int></typename></typename>…

clang 3.1 (trunk) に Unrestricted unions が実装された

されていました。 C++11 implementation status GIT mirror [ソース] #include <complex> union U{ U(){} ~U(){} int i; float f; std::complex<double> c; }; int main(){ U u; static_assert(sizeof(u) == 16, ""); return 0; } 着々と実装が進んでいるみたいですね。 ちな</double></complex>…