Вызов функции-члена this из универсальной лямбды - clang vs gcc

Выпуск: прохождение общего лямбда(к шаблонной функции) что захватываетthis и вызывает функцию-членthis без явногоthis-> не компилируется на gcc. Если лямбда не является универсальной или если лямбда не передается какой-либо другой функции, а вызывается на месте, она компилируется без явногоthis->, Clang крут с кодом во всех ситуациях.

Время для следующего раундалязг против gcc, Кто прав?

Пример Wandbox

template<typename TF>
void call(TF&& f)
{
    f(1);   
}

struct Example
{        
    void foo(int){ }

    void bar()
    {
        call([this](auto x){ foo(x); });
    }
};

int main()
{
    Example{}.bar();
    return 0;
}
Сbar() = call([this](auto x){ foo(x); });лязг ++ 3.6+компилирует.g ++ 5.2+не компилируется.

ошибка: невозможно вызвать функцию-член void Example :: foo (int) без вызова объекта ([this] (auto x) {foo (x);}); `

Сbar() = call([this](auto x){ this->foo(x); });лязг ++ 3.6+компилирует.g ++ 5.2+компилирует.Сbar() = call([this](int x){ foo(x); });лязг ++ 3.6+компилирует.g ++ 5.2+компилирует.Сbar() = [this](auto x){ foo(x); }(1);лязг ++ 3.6+компилирует.g ++ 5.2+компилирует.

Почемуthis-> необходимо только в случае универсальной лямбды?

Почемуthis-> не нужно, если лямбда не передаетсяcall?

Кто не соответствует стандартам?

Ответы на вопрос(1)

Ваш ответ на вопрос