次のクラスは、CRTP を使用して、初期化順序を保証する Schwarz カウンターを持つ std::vector に型を追加しようとします。3.6.2/2 によると、メンバー h_ には順序付けられていない初期化があります。これを変更して、初期化が行われたことを確認するにはどうすればよいですか? 派生クラスは、クラスから正しく継承するだけで済みます。
#ifndef P_H_
#define P_H_
#include "PR.h"
template <typename T>
class P
{
class helper
{
public:
helper()
{
PR.push_back(typeid(T));
}
};
static helper h_;
};
template <typename T>
typename P<T>::helper P<T>::h_;
#endif