stlex, а зачем рисковать ? Ведь ты не только инициализировать собираешься, но ещё и работать с ним
как-нибудь так
static std::vector<std::shared_ptr<ConvertCreator>> AllCreators;
static SOMESYNCTYPE AllCreators_sync_object;
ConvertRegistrator::ConvertRegistrator( std::shared_ptr<ConvertCreator> creator )
{
AllCreators_sync_object.lock();
AllCreators.push_back( creator );
AllCreators_sync_object.unlock();
}
std::shared_ptr<ConvertCreator> ConvertRegistrator::operator[](int i)
{
std::shared_ptr<ConvertCreator> res=0;
AllCreators_sync_object.lock();
if(i<AllCreators.size())
{
res=AllCreators[i];
}
AllCreators_sync_object.unlock();
return res;
}
static const ConvertRegistrator reg1( new ConcreteCreator );
а вообще, глобальные переменные не одобряю