C++

C++の罠にハマった話を解決するつもりがあんまり解決になってない話

C++

C++ の罠にハマった話 - 永遠に未完成 C++0xのtrailing-return-type使えば定義のたびにFoo::って書かなくて済む! class Foo { public: enum Result { OK, NG, }; Result process(); }; auto Foo::process() -> Result { return OK; } って、タイプ量増えて…

Boost.勉強会 #6 札幌 開催のお知らせ

少し先になりますが、2011/11/05(土)に、札幌にてBoost.勉強会を開催します。過去5回に渡って本州で開催されてきたBoost.勉強会を、津軽海峡を超えて、札幌で暖簾分けさせていただくことになります。そして、道外のC++erも何名か札幌に遊びに来て頂けるよう…

Rangeの要素をstatic_castとかdynamic_castする

Rangeの要素の型を変換したいと思ったときに、Ovenのconverted Rangeアダプタだと、implicit_castしかできなくて、static_castとかdynamic_castとかできないので、できたらいいなと思った。 transformedと関数オブジェクトとかboost::lambda::ll_static_cast…

スタートWt

WtとはC++で書かれたC++用のWebアプリケーションフレームワークです。APIはWidget-centricであり、デスクトップGUIアプリケーションのようにしてWebアプリケーションを書くことができます。 Wt, C++ Web Toolkit — Emweb EventハンドリングにはQtなどのよう…

Boost.Spirit.Qiで引数を取るようなrule・・・でいいのかな?

typedef qi::rule<Iterator, unsigned int(), ascii::space_type> rule_t; rule_t XXX_; rule_t YYY_; rule_t ZZZ_; XXX_ %= qi::omit[qi::no_case[ascii::string("XXX")] >> *qi::blank >> "=" >> *qi::blank] >> qi::uint_; YYY_ %= qi::omit[qi::no_case[ascii::string("YYY")] >> *qi::blank >> "=" >></iterator,>…

Spirit.QiのSemanticActionではまった(というかPhoenix)

#include <iostream> #include <string> #include <boost/spirit/include/qi.hpp> namespace qi = boost::spirit::qi; namespace ascii = boost::spirit::ascii; int main() { std::string const data = "0.123670"; unsigned int result = 0; using ascii::space_type; using qi::_val; using qi::_1; using</boost/spirit/include/qi.hpp></string></iostream>…

P-Stadeの読み方。

MBさん(Shunsuke Sogameさん)が製作され、僕もコミッタをさせていただいている、 C++のライブラリであるP-Stadeというのがありまして。この読み方がわからなかったので、作者であるMBさんに直接メールで伺ったところ、 ピースタッドと読みます Programmers' …

Template引数に関数のシグネチャを渡した時の各パラメータ

C++

Templateの引数に関数のシグネチャとか関数型を渡したときに、戻り値とか引数とかをそれぞれ取得する方法を知らなかった。取得する方法というかそのもととなる方法というか。 template<typename Signature> struct func_sig; template<typename R, typename A1, typename A2> struct func_sig<R(A1, A2)> { typedef R result_type; </r(a1,></typename></typename>…

札幌C++勉強会#2を開催しました!

C++

札幌C++勉強会#2を開催しました。 OSCの時にも宣伝させていただいたこともあってか、多くの方に来ていただくことが出来ました。 参加された方々、ありがとうございます。 13:00〜13:15 準備 13:15〜13:45 開始、参加者自己紹介 13:45〜13:55 休憩(10分) 13:5…

札幌C++勉強会#2開催のお知らせ。

来る7/3日、札幌C++勉強会#2 : ATNDを開催いたします。 [twitter:@lapis_tw]さんと[twitter:@h_hiro_]さんと僕でそれぞれセッションやらせていただきます。 前回はBoost.勉強会の鑑賞という内容でしたので、ちゃんとしたC++の勉強会の開催はコミュニティー発…

OSC2011 Hokkaidoに参加しました(喋ってきました)!

6/11に開催されたOSC2011 Hokkaidoで、札幌C++勉強会(Sapporo.cpp)として、 ブース展示とセミナー講演をしました![追記][twitter:@Flast_RO]さんがセミナー講演の内容の補足説明を書いてくださいました! http://d.hatena.ne.jp/Flast/20110612/1307873074 …

TDD Boot Camp 札幌 2.0に行ってきた

TDD Boot Camp 札幌 2.0 : ATNDに行ってきた。 去年の秋くらいにTDDBCなるものがあるらしいとの情報を得てからTDDとはなんぞやと思いつつも手を出してこなかった僕ですがいよいよ札幌で幾度目かになるTDDBCに参加してみちゃったりしました!当日、会場に着く…

Visual Studio 2008では同名のソースファイルを扱うことが出来ない件

Visual Studio 2008では同名のソースファイルが同一のプロジェクト内にあってはいけません。 僕は、たとえ無知だったとはいえ、その過ちを犯してしまい、全く想定外の挙動によって深い悲しみに包まれました。。。 あの頃の自分に教えてあげたい・・・ファイ…

C++0xのラムダ式でクロージャ

C++

#include <iostream> #include <functional> #include <string> int main() { auto f = [](std::string &&str) -> std::function<void()> { std::string s_ = str; return [s_] () mutable -> void { std::cout << s_ << std::endl; s_ += std::string(" Hello"); }; }; auto g = f("Message : "); </void()></string></functional></iostream>…

ちょっと乗り遅れな気がするけどSleep-Sort(C++0x, Boost, PStade.Oven)

#include <iostream> #include <vector> #include <boost/thread.hpp> #include <pstade/oven/algorithm.hpp> int main() { std::vector<int> v = {4, 2, 6, 1, 9, 10, 3, 7}; boost::thread_group ths; pstade::oven::for_each( v, [&ths](int n) { ths.add_thread( new boost::thread( [](int n) { boost::this_thread::s…</int></pstade/oven/algorithm.hpp></boost/thread.hpp></vector></iostream>

scoped enum

C++

enum_typeと名前をつけたenumを内部にもつstructを渡すだけでscoped_enumにする。0xが欲しいけど使えない人のため。 // Copyright hotwatermorning 2011. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE…

Boost.Rangeのirangeのstepに対してOvenのsteps

http://homepage1.nifty.com/herumi/diary/1105.html#13 Ovenは意図通りの挙動だった。 (というよりOvenには同様の機能が無いのでstepsを使った。) boost1.46.1 Ovenはtrunk(たぶん現行のリリースの1.04.3でも問題ない) #include <iostream> #include <pstade/oven/algorithm.hpp> #include <pstade/oven/counting.hpp> #incl</pstade/oven/counting.hpp></pstade/oven/algorithm.hpp></iostream>…

Rangeの翻訳まとめ

C++

Rangeについて勉強 - How to disappear completely Rangeの勉強その2 - How to disappear completely Rangeの勉強その3 - How to disappear completely Rangeの勉強その4 - How to disappear completely Rangeの勉強その5 - How to disappear completely Ran…

Rangeの勉強その6

C++

翻訳の続き。これで最後。 6 Range adapters (Part4) この提案の最後ではrange adapterを扱う. この小さなヘルパークラス達は次のような利点を持つ: operator|()によって簡単にアダプターを組み合わせることが出来る. ユーザーはiteratorとrangeの型の命名を…

エラーハンドリングについて考える。

書きながら考えたものなので、メモみたいな感じ。エラーハンドリングの知識を体系的に纏めた本とかないだろうか。 本屋に行ってみても、 プログラミング言語の棚を漁ると、エラーの中で致命的なものを例外として扱って、その言語における例外処理の文法につ…

Rangeの勉強その5

C++

翻訳の続き 5 Range utilities (Part3)Boost.Rangeはコア機能の外側に, iterator viewの使用を手軽にするutility-クラスをいくつか提供している: range sub_range view-オブジェクトとcontainer-オブジェクトの間の比較が簡単になるようなオーバーロードされ…

Rangeの勉強その4

C++

翻訳の続き。 4 既存のライブラリのコンポーネントへの拡張 (Part2)4.1 オーバーロードされた演算子4.1.1 and 2つのiteratorを期待するすべてのiterator-based algorithmに対してオーバーロードを追加する. 言語にconceptが導入されなければ, 実はいくつかの…

CRTPでPollingスレッド

polling_base.hpp #ifndef HWM_POLLING_BASE_HPP #define HWM_POLLING_BASE_HPP //! @file //! do processing every specifiec time. #include <boost/bind.hpp> #include <boost/thread.hpp> template< typename Derived, typename TimeDuration = boost::posix_time::time_duration > class p</boost/thread.hpp></boost/bind.hpp>…

Rangeの勉強その3

翻訳の続き 3 Rangeの基盤の基本 (Part1)typetraitsと独立関数からなるlibraryの基本要素について. * rangeの概念 * synopsis(1) * specification(1) 3.1 Rangeの概念このセクションではrangeの概念(concepts)を紹介する. rangeの概念は2つの構成要素からな…

setに渡す比較関数をBoost.Lambdaで指定

最近twitterでid:thincaさんが、boost::shared_ptrにくるんだoperatorUsing boost::shared_ptr with std::set 比較関数オブジェクト作ればいいけど、Boostならもっと短くしてくれるよね?って。そこで解答として boost/utility/compare_pointees.hpp を使う方…

Rangeの勉強その2

翻訳の続き 2 関連情報とoverview この提案は, すでに多くのcontextにおいてうまいこと使用されているBoost.Rangeをもとにしている. 例えば以下のライブラリはその基盤にBoost.Rangeを使用している. * Boost.StringAlgo(1.32からBoostに仲間入りした) * Boos…

面白かった

C++

http://shinh.skr.jp/m/?date=20110403#p01

Rangeについて勉強

Range Library Proposal Range Library提案を翻訳する。目標は今週中に Range Library Proposal摘要 この論文は, プログラマの構文的負担を軽減させるためにC++ standard libraryに対してのrangeの拡張を提案する. この論文はまた, alrgorithmとloopの使用を…

DLL上のCWinApp::InitIntanceが呼ばれない

既存のMFCのコードが有って、それをDLL化しようとしたけど、CWinAppを継承したCMyAppのようなクラスのInitInstanceが呼ばれない。CMyAppのグローバル変数であるtheApp;のコンストラクタは呼ばれている。InitInstance() not getting called in MFC dllここを…

Visual Studio 2008のC++開発の効率が上がるショートカット(ヘッダに移動)

釣りっぽいタイトル申し訳ないです。オプションからキーボードショートカット変更できますが、「以下の文字列を含むコマンドを表示」で"編集.ファイルを開く"を見つけて適当なショートカット割り当てます。 で、"表示.戻る"にも適当なショートカット割り当て…