template の絡んだ戻り値

[戻る]
小S 2004/09/01(水) 13:31:31
template の絡んだ戻り値についての質問なのですが、
下記のように class A を定義したとき、
メソッド Test1() と Test2() の戻り値 ( または動作 ) に何か違いがあるのでしょう
か?

template <typename T>
class A
{
    protected:
        T m_data;
        
    public:
        A&    Test1( T data ) { m_data = data; return ( *this ); }
        A<T>& Test2( T data ) { m_data = data; return ( *this ); }
};

επιστημη [E-Mail] [HomePage] 2004/09/01(水) 14:49:09
やってみればいい。

#include <iostream>
#include <typeinfo>

template <typename T>
class A {
protected:
  T m_data;
public:
  A&    Test1( T data ) { m_data = data; return ( *this ); }
  A<T>& Test2( T data ) { m_data = data; return ( *this ); }
};

int main() {
  A<int> a;
  std::cout << typeid(a.Test1(0)).name() << std::endl;
  std::cout << typeid(a.Test2(0)).name() << std::endl;
  return 0;
}

/* 実行結果
class A<int>
class A<int>
*/

…… 同じですね。

小S 2004/09/01(水) 19:09:19
[[解決]]
なるほど!! typeid() を使えば戻り値の型が確認できますね。
επιστημη さん、ありがとうございました♪

古いスレッドには追加発言できません。