В заголовке у меня есть
class CSomeClass
{
const GUID m_guid;
public:
CSomeClass();
///...
}
И в исходном файле
CSomeClass::CSomeClass()
, m_guid(
[]() {
GUID g;
::CoCreateGuid(&g);
return g;
}()
)
{
}
Как вы знаете, Гиды могут использоваться как идентификаторы, которые не должны быть изменены. Учитывая, что функция ::CocreateGuid()
предоставляет то, что я хочу в качестве выходного параметра, вместо того, чтобы возвращать ее, я не могу напрямую использовать простой вызов функции для инициализации поля члена m_guid, которое является постоянным.
Таким образом, следствием своей константы является то, что она должна быть инициализирована перед открывающей скобкой в списке инициализаторов и поэтому не должна быть просто назначена вызовом ::CocreateGuid()
в теле конструктора.
Есть ли более простой способ инициализировать это выражение лямбда?