~スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。Style*1を思い出した。たとえてprivateメンバのアクセス方法を説明している。publicはスリとして紹介されている。この方法はいろいろ遊んだなぁ。Styleのprivate_に直接アクセスする方法を示せ、というもの。VC8で試してみよう。偽造犯では、x.hをインクルードせずに、自分でクラスXを書いてしまうという。std::endl;}これはODR*3に違反する。privateとするだけ。これもODR違反、さらに予約語を#defineするのは非合法でもある。これは、オブジェクトのデータレイアウトが同じだろうという予想を使用する。std::endl;}今手元に仕様が無いのでアレなんだけど、reinterpret_castの結果は未定義なんだってさ。これは後で確認しておこう。なんというか、template怖い。std::endl;}クラスXがtemplateのメンバ関数を持っていることを利用して、無名名前空間内のYで特殊化している。C++のtemplateは柔軟すぎて怖いよ、本当。アクセス制御の使用と誤用*2:良い子も悪い子も真似しちゃ駄目です。ちなみに、VC8だとこれやってもcoutが普通に使えた。Blog|ブログを報告する。