Вот минимальный пример:
class A
{
A* const& this_ref;
public:
A() : this_ref(this) {}
};
GCC 5.3.0 дает предупреждение:
предупреждение: временная привязка к "A:: this_ref" сохраняется только до тех пор, пока конструктор выходит [-Wextra] A(): this_ref (this) {}
Является ли this
временным? Что... MSVC 2015 молчит об этом, и ссылаясь на членов класса на this_ref->member
вне конструктора, в моем случае дает ожидаемое поведение (но может быть просто случай UB, не уверен).
EDIT:
Обратите внимание, что этот вопрос расширяет один связанный как возможный дубликат, потому что это не общий вопрос о способе создания такой ссылки, а о предупреждении GCC (и возможных других компиляторов, отличных от MSVC) при создании.