C++

constexpr 関数を書きやすくする RETURN マクロ

C++

C++11 では関数の戻り値型を後置する構文が新たに入りました. auto plus(int a, int b) -> int { return a+b; } C++ の型はテンプレートが絡むと長くなりがちなので,今までは戻り値型だけで改行したりテンプレートのデフォルト引数を使って戻り値型を定義…

Effective C++ 読書会 Vol.1 に行ってきた

C++

C++ の名著,Effective C++ の読書会パート1に行ってきました. 具体的には,Effective C++ の各項に沿って怖い人達が熱く語る感じの内容でした. 3項までしか進まなかったんですが,2時間ほどかなり濃い内容で楽しめました.id:uskz さんと id:Cryolite さ…

プリプロセス時標準入力

C++

IOCCC のネタを漁っていたら面白いものがあったのでパクってみた. #include <iostream> int main() { char str[] = "" #include "/dev/tty" ""; std::cout << str << std::endl; return 0; } コンパイル時に "Hello, world!"^Dと入力(^Dは Ctrl+D)してコンパイルし</iostream>…

可変個数のコンテナに適用できる zipWith のようなもの

C++

std::transform では1つのコンテナに対して所謂 map の操作を行えたり,2つのコンテナに対して所謂 zipWith を行えます.今回は C++11 で新たに導入された Variadic Templates を使って,対象となるコンテナの数を任意個になるように拡張してみました. temp…

インクルードガード用の neocomplcache スニペット

neocomplcache のスニペットには Vim script の式を使って展開する機能があります. c.snip snippet include_guard alias inc_guard prev_word '^' abbr #if !defined HOGE #define HOGE #endif #if !defined `toupper( substitute( expand("%"), "\\.", "_"…

生配列を std::array に変換する

C++

constexpr で扱えて,実行時の効率もよいデータ構造+アルゴリズム - 危ないRiSKのブログ コンパイル時に配列を結合する - iorateの日記index_tuple を使って constexpr な生配列から std::array への変換の処理をする配列を書いてみました. int main() { /…

Homebrewで最新のGCC 4.6.3 をインストールするためのパッチを書いてみた

こちらに置いています. https://github.com/rhysd/others/blob/master/gcc-4.6.0-to-4.6.3.patchインストール方法は Homebrewで最新のGCC ( gcc-4.6.2 ) をインストールするためのパッチを書いてみた と同じなので割愛. 以前この方法でgcc-4.6.2をインスト…

Boost.勉強会 #8 に参加しました

2/11に大阪で行われた Boost.勉強会 #8 に参加してきました. Boost.勉強会 #8 大阪 - boostjp前々からBoost.勉強会には興味があってぜひ参加したいと思っていたので,今回の勉強会は即参加を決めました. メンバ変数のメンバ関数内でのリソース管理 ( @cpp_…

Boost.Test でモックテストしてみた

先日のBoost.勉強会 #8 にて,id:heisseswasser さんの発表へのアキラさん( id:faith_and_brave )のツッコミで,Boost.Testでもモックテスト用のライブラリがあるという指摘がありました. どうやらドキュメントに載っていないらしいので,自分なりに調べて…

SONY Go For It: 2) の解答

C++

問題 http://www.sony.co.jp/SonyInfo/Jobs/newgrads/sus/q02.html i) の解答 factorial_int.cpp // FILE: factorial_int.cpp // AUTHOR: rhysd (http://d.hatena.ne.jp/rhysd/) // License: MIT license {{{ // Permission is hereby granted, free of char…

Vimのinsertモードで便利なC++コーディング用キーマップ

autocmd FileType cpp call MyCppMapping() function! MyCppMapping() inoremap <buffer><expr><CR> \ strpart( getline('.'), col('.')-2, 2 ) == "{}" ? \ "\<CR>\<C-o>k\<C-o>$\<CR>" : "\<CR>" inoremap <buffer>{ {}<Left> inoremap <buffer>( ()<Left> inoremap <buffer>() () inoremap <buffer><> <><Left> inoremap…</left></buffer></buffer></left></buffer></left></buffer></cr></cr></c-o></c-o></cr></cr></expr></buffer>

constexprな関数でコンパイル時にn乗根を求める

C++

とあるプログラムで,定数の3乗根を求めたいことがありました. どうせ求めるならこれからも使えそうなn乗根で,どうせならconstexprでということで,書いてみました.求め方としてはニュートン法を使っています.初期値さえ間違えなければニュートン法はか…

Homebrew で Boost 1.48.0 をインストールする

有名なC++準標準ライブラリ群Boostの最新版が先日出たので,それに対応させるパッチを書きました. じきに公式に対応するとは思いますが,(自分みたいに)待てない人もいるかもしれないので公開しておきます.インストール方法は others/boost-1_47_0-to-1_…

Homebrewで最新のGCC ( gcc-4.6.2 ) をインストールするためのパッチを書いてみた

最近Macのパッケージ管理システムを色々使ってみていて,その一環でHomebrewを使ってみたりなどしました. Homebrewにはgccのパッケージが見当たらなかったので検索してみたところ, homebrew-altというリポジトリに比較的新しめのgcc-4.6.0のFormulaがあり…

NeoComplCacheのスニペット補完用C++11スニペットを書いてみた

C++11が国際標準として承認され,これから徐々に広まっていくであろう予測されます.そこでVimの有名な補完プラグイン,NeoComplCacheのスニペットにC++11で新たに加わった range-based-for,ラムダ式,scoped enumeration を追加してみました.例えば.vimrc…

ふぃず!ばず!

C++

これからプログラミング・ソフトウェアの設定などの備忘録として適当に書いていきたいなとか思ってます.一次情報にあたればいいものはせいぜい参考URL程度に,バグ踏んだ時などは少々細かめに行く予定.テストがてら,こないだ書いたfizzbuzzを貼っておきま…