Я нашел этот исходный код:
inline GUID& WString2Guid(wstring src)
{
static GUID result;
HRESULT hr = ::CLSIDFromString(W2OLE(const_cast<WCHAR*>(src.c_str())), &result);
if (FAILED(hr)) {
//ERROR: The string '%s' is not formatted as a GUID!
throw(E_INVALIDARG);
}
return result;
}
Какая польза от возврата ссылки здесь?Вызывающий код в любом случае не может получить ссылку, потому что к тому времени переменная покинет свою область видимости.Так что же, этот маленький знак &
имеет какое-то значение?
Чтобы прояснить / расширить вопрос: в той же программе-примере функция называется
GUID guid = WString2Guid(id); // way 1
Если я хотел сделатьпользуясь ссылкой, я не должен был бы звонить
GUID& guid = WString2Guid(id); // way 2
вместо этого?
И еще один вопрос;почему функция CLSIDFromString
вызывается с оператором ::
раньше?Это имело бы смысл только в том случае, если бы была объявлена другая локальная функция с тем же именем, не так ли?