...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

C++

typename

まずはC++. #include <iostream> template <typename T> struct A { typename T::X v; }; struct B { typedef int X; }; void main() { A<B> x; x.v = 42; std::cout << x.v << std::endl; } 次にD言語. import std.stdio; struct A(T) { T.X v; } struct B { alias int X; } void m</b></typename></iostream>…

インクリメンタルリンク失敗?

C++

なんだこれ. リンカーが死にやがった. 1>------ ビルド開始: プロジェクト: console, 構成: Debug Win32 ------ 1>コンパイルしています... 1>main.cpp 1>リンクしています... 1>main.obj : fatal error LNK1000: Internal error during IncrCalcPtrs 1> V…

Re: C++ におけるコードレビューの重要性と活用

それD言語でできるよ! って言いたかったので考えてみた. より現実的な問題は,const_cast や mutable のような不穏なキーワードを伴わず,かつドキュメントと実際の動作が異なる場合です. #include <iostream> class LargeObj; LargeObj* g_obj; class LargeObj { p</iostream>…

GetGC/ReleaseDC

学生の皆さんへ. しばらく動かしているとアプリケーションの実行速度が遅くなってくるとき,リソースリークしてる可能性が高いです. CDC* pdc = obj.GetDC(); ... obj.ReleaseDC(pdc); // これ忘れていない? 気をつけましょう. まあ,あとは template <typename OBJ> c</typename>…

std::iterator_traits の練習

C++

#include <iostream> #include <vector> #include <iterator> #include <algorithm> bool is_zero(int i) { return (i == 0); } namespace basic { // これだけ値を返す int find_if(int v[], int size, bool(*pred)(int)) { for(int i=0; i</algorithm></iterator></vector></iostream>

「C++の設計と進化」読了

C++

C++の設計と進化作者: Bjarne Stroustrup,ビョーンストラウストラップ,επιστημη,岩谷宏出版社/メーカー: ソフトバンククリエイティブ発売日: 2005/01/19メディア: 単行本購入: 2人 クリック: 322回この商品を含むブログ (160件) を見る夏休みに入ってから数…

C++0xにおける関数の統一文法

C++

関数の統一文法が通ったらこうやって書くようになるのかな?w #include <iostream> [] f(int x) { return x * 2; }; [] main() { std::cout << f(1) << std::endl; return 0; } 戻り値の型を明示しなくてもよいところはいいね. でもこの文化は浸透するだろうかー?</iostream>

charはunsignedではないがもちろんsignedでもない

C++

結果、signed char / char / unsigned char はそれぞれ別物だとさ。 なんだと!

「以下について教えてあげよう♪」

・大文字は小文字に、数字は'0','1','2'...を'9','8','7'...と反転させる。 ・ただし、'#'以降の文字は変換しない。 ・例として "Abc012_59F_#012Gh"を渡した場合の戻り値は "abc987_40f_#012Gh"となる。 以下について教えてあげよう♪ Dでサクッと書こうとし…

欲しい

C++

http://d.hatena.ne.jp/faith_and_brave/20090408/1239205628

new(nothrow)

C++

struct hoge{}; hoge* p = new(nothrow) hoge; こんなんあったのか・・・.

new Aとnew A()の違い

C++

via. shinhさんとかuskzさんとか. #include <iostream> struct A { int v; }; struct B { B(){} int v; }; struct C { C():v(){} int v; }; int _tmain(int argc, _TCHAR* argv[]) { A* s = new A; A* t = new A(); B* u = new B; B* v = new B(); C* w = new C; C* x</iostream>…

プログラミングの常識の非常識

うは,すごい長文お疲れ様です. クラスは型である グローバル変数を使用していたコードをローカル変数を使用する方法に改良して、さらに最終的には「より良いコード」としてひどいコードを紹介している。 あー・・・.完成形のコードとして見るならこれはひ…

basic_string

C++

んー,使い物になるのかな?

boostの再インストール(2)

C++

http://d.hatena.ne.jp/haru-s/20090208/1234051789 教えていただいたようにやってみたらとっても早くビルドできた♪ bjam -a -j8 -d0 warnings=off --toolset=msvc-9.0 --stagedir=. link=static runtime-link=shared release debug stage

boostの再インストール

C++

せっかくマルチコアCPUになったのでbjamにマルチコアをぶんまわして欲しいのだがやり方がわからない罠.

C++0x時代のC++サブセット

C++

STL時代のC++サブセットも欲しかったんだけど,今度こそ. これからはこの構文/ライブラリを使わずこっちを使え,というのが欲しいなー. 前のも使えるけどこっちの書き方もできるようになりました,じゃなくて,これのよりよい代替機能としてこれができまし…

C++ではできなくてDならできることシリーズ - メンバ関数テンプレートの部分特殊化

import std.stdio; class A { void f(T,U)(T t, U dummy) { writefln(t, ": call with sometype."); } void f(T:int,U)(T t, U dummy) { writefln(t,": call with int."); } } void main() { A a = new A; a.f("hoge", 0); a.f(1, 0); } hoge: call with som…

インテリセンスががが

C++

gpuppurgpuppur CommentsAdd Star 2009/01/04 13:38Exceptional C++ Styleという本にはclassのデータ構造に依存する関数だけをclassのmethodにして他は普通の関数にすべしという事が書いてありました。 例えばSTLの各コンテナにあるsize()はデータ構造に依存…

boost::ptr_vector

C++

あれー? ptr_vector<>::end()はptr_vector<>::const_iteratorで受けられないのか? #include <boost/ptr_container/ptr_vector.hpp> struct A{}; void f() { boost::ptr_vector<A> x; boost::ptr_vector<A>::const_iterator end = x.end(); // C2440 //どっちかならコンパイルできた //boost::ptr_vect</a></a></boost/ptr_container/ptr_vector.hpp>…

shared_ptrを使おう

C++

当然だがほとんどの後輩がshared_ptrを知らないみたいなので,いつかC++講座で使うための説明用資料としてここに書いておく. 概要 shared_ptrを使うとnewして作成したオブジェクトを明示的にdeleteしなくてもよくなる. 原理的に,どこからも参照されなくな…

変換コンストラクタとキャストのシンタックス

C++

変換コンストラクタとキャストのシンタックスが同じなのは罠だよなあ. struct my_int { my_int(double a) : v(static_cast<int>(a)) {}; int v; }; void f(my_int a) { printf("%d\n",a.v); }; void f(int a) { printf("%d\n",a); }; void g() { f(my_int(12.3))</int>…

VC9.0 SP1 Hotfix

C++

http://d.hatena.ne.jp/faith_and_brave/20081218/1229573189 これは当てなければ.

ラムダ式

C++

http://d.hatena.ne.jp/faith_and_brave/20081211/1228989087 これは分かりやすい.

C++WGから帰宅(レポは多分明日)

C++

皆様,お疲れ様でした. 今日ほどC++の話をしたことはこれまでありませんでした. 案の定話について行くので精一杯な感じでしたが,思い出に残る楽しい一日になりました. いつもブログ等を読ませていただいていて挨拶できなかった方が相当数いらっしゃるの…

CとC++の互換性

C C++

C99で互換性が失われてしまったわけだが,もうC++はCには追随しないのだろうな. C++はもっと色々なものをdeprecatedにしてもいいと思う.

コンパイルが遅い言語C++

C++

concept/concept_mapとかを導入したらもっとコンパイルが遅くなるのかと心配されているようだ. コンパイル遅いよねえC++. includeのせいだっけ? moduleというのが提案されてたらしいのはどうなったのかな. D言語は改めて早いわー.

コンセプトの勉強(2)

C++

そして、このコンセプトの要求を満たさなければならないクラス/関数を定義する template <LessThanComparable T> const T& min(const T& lhs, const T& rhs) { return lhs < rhs ? lhs : rhs; } こうしてもいい(こっちの書き方だと、コンセプトを&&で複数指定できる) template <class T> req</class></lessthancomparable>…

コンセプトの勉強

C++

template < typename T > requires Addable< T > T add( T const & x, T const & y ) { return x + y ; } これ以上に無いくらい簡単だ。必要なのは、コンセプトAddableを書くだけだ。どのように書けばいいのだろう。コンセプトの初心者は、次のように書くこ…

C++WGコメント集を読む

C++

http://d.hatena.ne.jp/faith_and_brave/20081125/1227604874うーむ,あれだけの文章量なのに,よく仕様の食い違いなどを発見できるなぁと感心するばかり. 普段使っていて不便に感じるところの改善提案なら少しは自分でもできるかもしれないが・・・それで…