[SIMILAR] WITH 19771 数ポ WITH 19043 ス宣 WITH 11091 typedef WITH 10985 バ関 WITH 9482 方参 WITH 7748 言vo WITH 7748 訳単 WITH 7748 承タ WITH 7455 関数 WITH 7323 理形 WITH 7159 pfn WITH 5742 数へ WITH 5686 宣言 WITH 5551 継承 WITH 5341 ス定 WITH 4019 sizeof WITH 3856 ポイ WITH 3831 前方 WITH 3694 struct WITH 3415 片方 WITH 3237 照の WITH 3237 、継 WITH 2519 効率 WITH 2452 void WITH 2365 適化 WITH 2063 の宣 WITH 1954 形式 WITH 1811 なク WITH 1772 参照 WITH 1641 、片 WITH 1616 ルオ WITH 1533 ンタ の検索結果 126 件中 1 - 10 件目 (0.077812444 秒)
色々調べてみたところわかりました。そもそもVCでは、メンバへのポインタを効率よく動かすためにこしゃくな^^;最適化を行っているようです。なので、以下でメンバ関数へのポインタのサイズが異なります。 struct A; // 前方参照のみ typedef void (A::*PFN)(); // sizeof(PFN)は16 struct A { // 完全なクラス宣 ...
長い識別子で書いたように、関数ポインタを受けるコンストラクタでクラッシュする件なのですが、少しいじったら再発するようになってしまいました。で、色々と調べたところ識別子の長さは関係なさそうです。小さなプログラムで再現させられていないのでまだ不確かなのですが、前方参照宣言しかしていないクラス ...
# (スコア:6708)
メンバ関数のポインタを二つくらい引数にしてコンストラクタを呼び出すと、なぜだか呼び出されたときに引数が壊れているという現象が起きました。なんでだろう? 識別子が長いのが原因かなと思って、試しに関数ポインタをtypedefしてそちらを使うようにしたらちゃんと動作する用になったので良かったのですが、い ...
# (スコア:6355)
opensslのドキュメントってちゃんと書いてあるものがほとんどないようなんですが、どこかにまとまってあるんでしょうか?関数の引数の方は名前と型で大体想像がつくのですが、戻り値がなんなのかがわからないものが多いです。特に、戻り値がintだった場合など。しょうがないので、ソースを見ながらやっていますが ...
# (スコア:5203)
たとえばこんなクラスがあるとして、 class ToString a where toString :: a -> String 以下の型にインスタンスを宣言することを考えます。 newtype Wrap a = Wrap a 普通のインスタンス宣言は、たとえばこんな感じ。 instance Show a => ToString (Wrap a) where toString (Wrap x) = "Normal:" ++ show x たと ...
# (スコア:4817)
struct X { void foo() const; }; void (X::*pfn)() = &X::foo; これは安全ではないかという話です。今のところ付いている返答はピントのずれたものばっかり。 ついでに、テンプレートパラメータにはfloatやdoubleは使えないなんていうのも新発見でした。こんなのです。 template<float f> struct X { }; ...
# (スコア:3604)
C++のコードをアセンブラに落として調べているのですが、メンバ関数を呼び出すときには、r0にthisをセットしてから関数にジャンプすれば良い模様です。 なんだか例外処理と関係なくなって、ARMのアセンブラ入門みたいになっちゃってますね^^;;。 ...
# (スコア:3218)
VC6はなぜかテンプレート引数をルックアップするときに他のローカル名を見てしまうようです。 template<class T> struct X { typedef typename T::Foo Bar; }; struct Y { typedef int Foo; }; struct T {}; // (#) void foo() { X<Y>::Bar bar; } (#)の行を削るとコンパイルできるようになります。適当なテンプ ...
# (スコア:2748)
STLportのhash_mapのiteratorをインクリメントするときにキーが壊れていると正しくインクリメントできません。例えばこんな感じ。 struct X { }; typedef std::hash_map<X*, int> M; M m; m.insert(M::value_type(new X(), 0)); for (M::iterator it = m.begin(); it != m.end(); ++it) delete (*it).first; イ ...
# (スコア:2702)
C++09の話。 テンプレートエイリアス テンプレートtypedefとして望まれていたものはテンプレートエイリアスとなるようです。 template<typename T> using Registry = std::map<std::string, T>; テンプレート引数がないものもtypedefの代わりに使えます。 using Size = int; 可変長テンプレート 可変長のテンプ ...
# (スコア:2702)
# (スコア:10000)