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 ); }
};
やってみればいい。
#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>
*/
…… 同じですね。
なるほど!! typeid() を使えば戻り値の型が確認できますね。
επιστημη さん、ありがとうございました♪