最近、次のようなコードを読みました。
template <unsigned long size>
class FooBase
{
bool m_bValid;
char m_data[size];
};
template <class T>
class Foo : public FooBase<sizeof(T)>
{
// it's constructor
Foo(){};
Foo(T const & t) {construct(t); m_bValid = (true);}
T const * const GetT() const { return reinterpret_cast<T const * const>(m_data); }
T * const GetT() { return reinterpret_cast<T * const>(m_data);}
// could anyone help me understand this line??
void construct(T const & t) {new (GetT()) T(t);}
};
それほど複雑ではないことを確認するためにコードをスライスしました。主な質問はconstruct(T const & t)
関数に関するものです。
とはどういうnew (GetT()) T(t);
意味ですか?
ところで、どのバージョンGetT()
が呼び出されますか?