Здравствуйте, remark, Вы писали:
R>А где у тебя names-то определяется?
R>Напиши:
R>R> static std::list<std::string> >& names()
R> {
R> static std::list<std::string> > inst;
R> return inst;
R> }
R>
R>В таком случае переменная всегда будет инициализирована перед первым обращением (и как бонус переменную не надо дополнительно определять). Однако учти, что это будет работать только, если обращения к names() идёт из одного потока, ну или точнее так — первое обращение из одного потока, потому что инициализация статических переменных на уровне функции в общем случае не потокобезопасная.
Да, names определяется в другом файле, просто забыл написать. Уже сделал этот вариант с функцией.
Поскольку работа с names идёт толко при загрузке dll, то проблем с потоками быть не должно.