Я думаю, что вы сталкиваетесь с этим из C ++ FAQ Lite. По сути, вы на самом деле не инициализируете это. Лично я удивлен, что рассматриваемая линия вообще ЮРИДИЧЕСКАЯ (мой мозг тает от ссылки на указатель), но взгляните на ссылку. Он показывает, как компилятор может интерпретировать (или неправильно интерпретировать) определенные виды операторов инициализации.
Я думаю, что вы хотите сделать, это что-то вроде ниже:
Singleton<T>*& rp_singleton = rpSingleton();
Так что прочитайте ссылку. В основном я думаю, что компилятор думает, что вы вызываете функцию или что-то в этом роде. В любом случае, строка об этом исправляет ... Я думаю.
Изменить: вы также можете взглянуть на этот раздел , который имеет дело со ссылками.