template <typename T>
class DataStoreArray
{
public:
explicit DataStoreArray(std::size_t size) : mValueArray(new T[size]) {}
~DataStoreArray() { delete [] mValueArray; }
inline T operator[](std::size_t index) const
{
cout << "from primary : T : " << index <<endl;
return mValueArray[index];
}
inline T& operator[](std::size_t index)
{
cout << "from primary : T& : " << index <<endl;
return mValueArray[index];
}
private: T* mValueArray;
};
int main()
{
static const int size = 3;
DataStoreArray<int> iStoreArray(size);
for (int i = 0; i < size; ++i)
{
iStoreArray[i] = i * 10;
}
}
from primary : T& : 0
from primary : T& : 1
from primary : T& : 2
iStoreArray2[i] = i * 10;で[]をオーバーロードした時
戻り値がT&のほうが呼び出されるのはなんででしょうか?