こんなのしか思いつかなかった。

C++

可変引数を保持しておいてそれを別な関数に渡すには? やりたい事と違うかもしれませんが #include <tuple> #include <iostream> #include <string> template <class T> void do_something(const T& t) { std::cout << t << std::endl; } template <class Tuple, size_t N> struct do_tuple_helper { static void do_al</class></class></string></iostream></tuple>…

いまさらですが。

mplを勉強中。C++関連の勉強会があれば今度わんくまの勉強会に参加してみたいなー。

threadクラスの実装を晒す2

C++

日にちがあいてしまいましたがエラー処置と引数を追加していきます。 コンストラクタで行っていた処理をstart_thread関数に移しています。 それに伴いthread_base*をメンバー変数p_にしました。 // thread.hpp #include <memory> // std::auto_ptr #include <process.h> // ::_b</process.h></memory>…

前回雑記で書いたthreadクラスの実装を晒す

C++

実装を見る前にもう一度threadクラスの使い方を見ておきます。 #include <iostream> #include "thread.hpp" // これから実装を見ていくthreadクラスのヘッダファイル void foo() { std::cout << "fooを実行しています" << std::endl; } int main() { thread t(foo); //</iostream>…

やっとリンク集を作成

といってもまだ全然追加してません。 仕事で徹夜続きで頭がまわらない。ところで、C++0xのthreadクラスがWindows上で使える環境が手元に無いので作ってしまいました。 前回refが必要になったのはこのthreadクラスのコンストラクタに渡す引数を テンプレート…

boostのrefが必要になったので作ってみた

C++

boostにあるref相当の物が必要になりました。 なので作ってしまいます。 template class reference_holder { T& val_; public: reference_holder(T& arg) : val_(arg) {} // Tのリファレンスを保持 operator T&() { return val_; } // 型変換を利用してTのリ…

ISO/IEC 14882:2003 PDFをみつけた。

C++

これってまずいんじゃないですか?(^-^; それとも偽者? http://code.google.com/p/openassist/downloads/detail?name=C%2B%2B%20Standard%20-%20ANSI%20ISO%20IEC%2014882%202003.pdf&can=2&q=

オーナードローって何ですか?おいしいんですか?

さて、MFCのCButtonBitmapの実装をヒントにCButtonのオーナードローをさくせいちゅう。 ボタンの上にマウスあわせると貼り付けたビットマップが変わるようなやつ。 これめんどくさいわー。MSDN見ても実際試してみないとわかんなかったし。 GetSafeHandle()っ…

gcc4.4のthreadがコンパイルできない

C++

Windows版だけかもしれませんが、C++0xのヘッダは以下の定義が入っていてclass threadが使えなかったです。 #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) これらはで定義されてます。 /* Define if gthreads library is ava…

opensslにAES暗号化ライブラリがあるのを知ったのでこんな形で利用できるようにラップしてみました。

C++

キーとIVの設定 aes::aes_cbc cbc_key(key, iv); エンコードするとき // AES-CBC encode // サイズが0以下の場合throw bad_aes_cast aes::byte_string enc_buf = aes::aes_encode_cast(cbc_key, data); デコードする時 // AES-CBC decode // デコードしたい…

忙しい

仕事が終わって帰ってこれるのが最近1時とかでそこから boostメーリングリストのメール読んでると寝れないw C++0xネタも英語得意じゃないから読むの時間かかるし。 何より今回の拡張はかなり多い。ところで、今会社でC++を教えながら仕事してるんですが み…

シングルトンについて

C++

結論から言うとDouble Checked Lock使う場合はメモリバリアを入れなさいと。 そうでないならThread Local Storageを使って実装しなさいなのですねー。 [参考1]The "Double-Checked Locking is Broken" Declaration [参考2]Binary Hacks ―ハッカー秘伝のテク…

まりあほりっく面白い!

さっきまでDouble Checked Lockはメモリモデルによって 未初期化オブジェクトが返るって話を書こうと思ってたけど まりあほりっくが始まったので中止w

ゲームプログラマ覚えておきたい技術

これ買ってみました。 しばらく数学とかからは離れちゃってこれ読めるか不安だったけど コード例がC++で書かれてるから意外と読めるかも ちょっとがんばってみよー

う〜ん

C++

Windows版gcc4.4の-fthreadsafe-staticsは動かないなぁ〜 tlsの__threadはうまく動いてるっぽいのに。 Thread-local storage NOだからtlsも動いてないぽい? memory barrierはうまく動いてるのかどうかわからない。 特にVCの_ReadWriteBarrier系は使う必要あ…

C++の仕事してると

なぜかライブラリを作ることに夢中になり業務の機能実装が遅れていくと言う。 技術力の無さもあいまって、サクサク書くんじゃなくてかなり悩みます^-^; このクラスは隠蔽して、こっちは公開したいからインタフェース作って どこまでクラスを細分化しようかな…

のりおくれたー

C++

cppll_noviceに今日流れてたStackとHeapの測定は面白かったなー 参加したかったけど仕事してました。一応測定ネタとして。 Windowsの場合は以下のAPIを使用して計測するのが良いです。 SetThreadAffinityMask ← 実行するプロセッサを固定するために使用する …

Windows版gccを紹介

元ネタ→gcc 4.3.1 を Windows で使ってみる 今自分が使ってるgccはここからダウンロードして来たやつ。 置いてあるのが gcc version 4.3.2なのでそれをインストール。 # gcc4.4xxもあった インストール先がデフォルトだとマイドキュメントになったので別なと…

続)メンバー関数テンプレートの特殊化

C++

結局main側のインタフェースを変えずにどう実装するかに着目した結果こうなった。 #include #include #include // Widgetのfooから呼ばれる関数オブジェクトを作る template struct widget_foo { T operator ()(int i) { T tmp; std::stringstream ss; ss ss…

gccでcppファイルをコンパイルする時。

C++

ちょっと調べものしてたらgccでC++コンパイルする際に以下のコマンドでコンパイルしてる人が多かったので。 gcc -Wall main.cpp でもこれは間違い。正しくはこう gcc -Wall main.cpp -lstdc++ または g++ -Wall main.cpp こうしないとstl使ってるコードはリ…

突然クラスのテンプレートメンバー関数の特殊化ができるか気になった

C++

のでこんなコードをVC 2008 Express Editionでコンパイルしてみた。 #include #include #include class Widget { public: template T foo(int i) { T tmp; std::stringstream ss; ss ss >> tmp; return tmp; } template <> int foo(int i) { return ++i; } }…

どうも自分の周りにはあまりC++が好きだって人が居ない。 そもそもstlをがしがしつかってコード書こうって人が少ない。(存在自体知らない人も多すぎ) 私はC++が好きなのでかなりマニアックな話とかして もっとレベルアップしたい訳なんだけど中々どうして・・・…

今日ちょっと会社の人にboostのlambdaのコードを見せて何をしてるコードかわかる?って聞いた見た。

C++

こんなの。 using namespace boost::lambda;std::vector v; v.push_back(7); v.push_back(6); v.push_back(5); v.push_back(4); v.push_back(3); v.push_back(2); v.push_back(1);std::cout ちなみに出力結果は以下 4 結果、わかると答えた人は1名。 その人…

プログラミングネタのブログはじめます

続くかわからないけど主に仕事で悩んだプログラミングのネタ帳的な位置づけでブログはじめてみます〜 主にC++ネタ中心で行こうと思ってますよろしくです。

機能仕様書とか詳細設計書とかの位置づけに関して

よくあるネタだと思うんですけど、機能仕様書とか詳細設計書とかどうやって書けば良いの? で、 Joel on Software やさしい機能仕様 ↓ http://japanese.joelonsoftware.com/Articles/PainlessFunctionalSpecifi-2.htmlここは良く書かれていると思う。 ただ残…