Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

VC++ 2005 SP1の変更点

Visual Studio 2005 SP1のリリースノートより。

template <class T>
class A
{
public:
    typedef int N_A;
};
template <class T>
class B : public A<T>
{
public:
    typename A<T>::N_A test();
};
template <class T>
typename A<T>::N_A B<T>::test()    /* 1 */
{ 
    return 0;
}
テンプレート クラス B はテンプレート クラス A を継承しています。A<T> は入れ子になった型 N_A を持ち、B<T>::test() はこれを返します。Visual Studio 2005 SP1 のコンパイラは、/* 1 */ とマークされた行でエラー C2244 を発生します。この問題を回避するには、B<T> 内の A<T>::N_A で typedef を定義し、その typedef を B<T> 全体で使用します。この回避方法を使用する場合、上記のコードは以下のようになります。
template <class T>
class A
{
public:
    typedef int N_A;
};
template <class T>
class B : public A<T>
{
public:
    typedef A<T>::N_A N_B;  // typedef definition
    typename N_B test(); // use of the typedef in the return type
};
template <class T>
typename B<T>::N_B B<T>::test()    // use of the typedef in the return type
{ 
    return 0;
}

投稿日時 : 2007年3月25日 19:25

Feedback

No comments posted yet.
タイトル
名前
Url
コメント