2011-01-01から1年間の記事一覧
今年最後の記事です。 最後は今年お世話になったツールとか。 本当は Boost.QVM について書きたかったけど無理そうなので来年にする。 プログラミング回り Vim 言わずもがな まさにライフがハックされてチェンジしました Visual Studio コーディングは Vim …
レビューが終わったのが8月なので今更かよ!って感じですが。年内のうちに書いておかったので書きます。 一部のメタプログラマ歓喜の Type Traits Introspection ライブラリです。 [関連] Boost.TTIが採択されました - Faith and Brave - C++で遊ぼう [Type …
辞書関数内で自分にアクセスする為には self を使わないとダメなんですが、ちょっと手間だったんでローカルに展開するようにしてみました。 [ソース] let dict = {} let dict.name1 = "homu" let dict.name2 = "mami" let dict.name3 = "mado" function! dic…
と、いう事で unite.vim でライフゲームをつくってみました。 ライフゲームについてはここら辺を読んでみてください。 最初に言い訳しておくと結構アレな感じになってしまったのでレスポンスは悪いです。 [Vimプラグイン] unite-life-game - github [コマン…
とか書いてみました。 [ソース] #include <iostream> #include <type_traits> template<typename ...Args> using common_type = typename std::common_type<Args...>::type; template< typename ...Args, typename CommonType = common_type<Args...> > void disp(Args&&... args){ for(auto&& n : { static_cast<CommonType>(args)..</commontype></args...></args...></typename></type_traits></iostream>…
バッファを終了する際に を使っているんですが、これだとバッファが削除されるわけではないので、どんどんバッファが溜まっていってしまいます。 という事で、終了するバッファが他のタブ(ウィンドウ)で開いていないならバッファを削除するという挙動にし…
ファイルをタブで開く時に『既にファイルが開いているならがあるなら新規タブを作らないでそっちに移動して欲しい』って事は結構あると思います。 Vim では :tab drop {file} というコマンドで『既にファイルが開いていたらそこに移動して、なければ新しいタ…
ちょっと書いてみました。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <sprout/tuple.hpp> template<typename Tuple> struct reverse_tuple{ Tuple tuple; }; namespace sprout{ namespace tuples{ template<std::size_t I, typename Tuple> struct tuple_element<I, reverse_tuple<Tuple>> : tuple_…</i,></std::size_t></typename></sprout/tuple.hpp>
メリークリスマス! ってことで unite.vim でクリスマスツリーつくったよ! さっきまで、ぼっちクリスマスパーティしていたけど全然悲しくないよ! [Vimプラグイン] unite-xmas-tree - github [コマンド] :Unite xmas-tree -update-time=1000 -cursor-line-h…
ついでにカリー化も。 [ソース] #include <functional> #include <type_traits> namespace aliases{ template<typename T> using remove_reference = typename std::remove_reference<T>::type; } // namespace aliases template<typename F, typename First> struct bind1st_impl{ template<typename ...Args> constexpr auto operator …</typename></typename></t></typename></type_traits></functional>
走らせました。 [元ネタ] Emacs で SL - とりあえず暇だったし何となく始めたブログ [Vimプラグイン] unite-sl - github [コマンド] :Unite sl -update-time=10 -cursor-line-highlight=Normal うーん、いまいち面白みが足りないですね。
こういうテクニックは全然知識が無いですね…。 Twitter で教えてもらったので覚え書き。 [コマンド] " 2文字ごとに分割する echo split("ほむまみまど",'..\zs') [出力] ['ほむ', 'まみ', 'まど'] 文字数を変える場合は、. で調節します。
Boost Formal Review Schedule このページの存在を知らなかったので覚え書き。 Boost のレビューのスケジュール表です。 Boost.QVM とかはレビュアー待ちなのかな?
なんだかんだで食わず嫌いしていた neobundle.vim ですが、やっと使い始めました。 neobundle.vim - github 便利便利。 使い方とかはここら辺を参照すればいいと思います。 とりあえず、こことかを参照して知っている unite-source を全て書きだして見ました…
まぁそんな感じの処理です。 関数の引数を Tuple で渡して評価します。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <sprout/tuple.hpp> template<std::size_t... Indices> struct index_tuple{}; template< std::size_t Start, std::size_t Finish, std::size_t S</std::size_t...></sprout/tuple.hpp>…
neocomplcache と clang_complete を併用して使用する事が出来る、neocomplcache-clang_complete というプラグインをつくりました。 [注意] 現在この問題は解決されました。 詳しくはこちらを参照下さい。 名前が安直なのは仕様です。 [問題点] 両プラグイン…
規格の方は確認してないんですが、gcc 4.7 では動作しました。 [ソース] #include <initializer_list> template<typename T> constexpr auto front(std::initializer_list<T> list) ->decltype(*list.begin()){ return *list.begin(); } template<typename T> constexpr auto at(std::initializer_list<T> lis</t></typename></t></typename></initializer_list>…
元ネタはこちら。 unite-nyancat - Big Sky nyancat.vimの裏話 - KaoriYa これを unite.vim で動かしてみました。 実際のデータとかは両プラグインから拝借。 [Vimプラグイン] unite-nyancat_anim - github [コマンド] :Unite -update-time=10 -winheight=30…
思いついたのでサッと書いてみました。 まぁなんかそんな感じです。 [Vimプラグイン] unite-banban2 - github [コマンド] "example command :Unite -cursor-line-highlight=Normal -winheight=8 -update-time=10 -buffer-name=ora jojo:オラ :Unite -cursor-…
またつくりました。 今度は二次元! [Vimプラグイン] unite-banban2 - github [unite.vim の設定] " アニメーションの速度 let g:unite_update_time = 200 let g:unite_cursor_line_highlight = "Normal"
文字列で受け取る場合は、prefix も一緒に渡されるんですねー。 [ソース] #include <iostream> char const* operator "" _c_str(char const* str){ return str; } int main(){ std::cout << 0xff << std::endl; std::cout << 0xff_c_str << std::endl; std::cout << 07</iostream>…
ありゃ、clang でも Uniform initialization 使えたんですね。 知らなかった…。 [ソース] #include <string> #include <cassert> struct X{ int n; std::string str; }; X func(){ return {0, "homu"}; } int main(){ X x{0, "homu"}; auto x2 = func(); assert(x.n == 0); as</cassert></string>…
ちとハマったので覚え書き。 #include <boost/range/any_range.hpp> int main(){} のように だけだと any_range.hpp 内でコンパイルエラーになります。 // 先に include する #include <boost/range/concepts.hpp> #include <boost/range/any_range.hpp> int main(){} 先に を include する事で解決しました。 一応、チケットに上がっているみ</boost/range/any_range.hpp></boost/range/concepts.hpp></boost/range/any_range.hpp>…
つくりました某プラグインのパクですが。 かわいいですね。 [Vimプラグイン] unite-banban - github [unite.vim の設定] " アニメーションの速度 let g:unite_update_time = 200 let g:unite_cursor_line_highlight = "Normal" ふぅ…また Vim がかわいくなっ…
つくったよ(/ω・\)チラッ これをつかえば女子力アップですね☆(ゝω・)vキャピ データはここから使わせて頂きました(〃ノωノ)キャッ 桜花あどべんとかれんだぁ(12日目) - ひよっこプログラマのプログラミング [Vimプラグイン] unite-rofi - github [キーマッピング]…
最近、よく使っているんですが、std::integral_constant は、 constexpr operator value_ type() { return value; } を定義しているのでこんな感じで渡すことも出来ます。 [ソース] #include <iostream> #include <type_traits> extern void* enabler; template<bool B, typename T = void> using enabler_if = </bool></type_traits></iostream>…
rvalue reference については、こことか、こことか、ここら辺に詳しく書いてあります。 さて、rvalue reference ですが、簡単に説明すると次の様な挙動になります。 int n = 0; int&& x1 = 0; int&& x2 = n; // error これは関数で受け取る場合も同様で、 vo…
つくりました。 なんという unite.vim のムダ使い。 colorscheme の背景が黒っぽい方が見栄えがいいと思います。 [Vim plugin] unite-shimapan - github [vimrc] " カーソル行のハイライトがかぶるのが嫌な場合 let g:unite_cursor_line_highlight = "Normal…
逆に違和感があってなんかアレ。 [ソース] #include <type_traits> #include <iostream> template<bool B, typename T = void> using enable_if = typename std::enable_if<B, T>::type; template<bool B, typename T = void> using enabler_if = typename std::enable_if<B, T>::type*&; extern void* enabler; template</b,></bool></b,></bool></iostream></type_traits>
なぜ、今まで気づかなかったんだ。 [ソース] #include <type_traits> template<typename T> using add_pointer = typename std::add_pointer<T>::type; template<typename T> using add_const = typename std::add_const<T>::type; template<typename T> using remove_const = typename std::remove_const<T>::type; tem</t></typename></t></typename></t></typename></type_traits>…