Информация об изменениях

Сообщение Re[7]: Отсутствующий конструктор копирования в MSVC2019 вызы от 07.03.2024 18:00

Изменено 07.03.2024 18:01 rg45

Re[7]: Отсутствующий конструктор копирования в MSVC2019 вызы
Здравствуйте, Marty, Вы писали:

R>>Вот когда есть небольшой понятный примерчик, который и там и сям работает, а не работает только на каком-то определенном компиляторе или режиме, вот тогда тогда только можно говорить, что это баг компилятора. А так это просто предположение, а точная причина так и не выяснена пока.


M>На MSVC не работает так же, как у меня

M>https://godbolt.org/z/ba4Pexz3j

А давай, попробуем совсем-сосем упростить?

http://coliru.stacked-crooked.com/a/007b9a0be18537d8

#include <memory>

struct A
{
    A() = default;
    A(A&&) = default;

    A(const A&) = delete;

    static A Create() {return {}; }
};

A makeA() { return {}; }

int main()
{
    const auto sp = std::make_shared<A>(A::Create());
}


Можешь попробовать комильнуть у себя? Если возникнет та же ошибка — тады ой — это однозначно проблема MSVC. Ну а если откомпилится успешно, тогда твое предположение ошибочно, так получается.
Re[7]: Отсутствующий конструктор копирования в MSVC2019 вызы
Здравствуйте, Marty, Вы писали:

R>>Вот когда есть небольшой понятный примерчик, который и там и сям работает, а не работает только на каком-то определенном компиляторе или режиме, вот тогда тогда только можно говорить, что это баг компилятора. А так это просто предположение, а точная причина так и не выяснена пока.


M>На MSVC не работает так же, как у меня

M>https://godbolt.org/z/ba4Pexz3j

А давай, попробуем совсем-совсем упростить?

http://coliru.stacked-crooked.com/a/007b9a0be18537d8

#include <memory>

struct A
{
    A() = default;
    A(A&&) = default;

    A(const A&) = delete;

    static A Create() {return {}; }
};

A makeA() { return {}; }

int main()
{
    const auto sp = std::make_shared<A>(A::Create());
}


Можешь попробовать комильнуть у себя? Если возникнет та же ошибка — тады ой — это однозначно проблема MSVC. Ну а если откомпилится успешно, тогда твое предположение ошибочно, так получается.