Member 14087451 Ответов: 0

Ошибка в моем коде C++ 11


как это исправить:

Ошибка C3249 незаконный акт или суб-выражение для функции функция constexpr'

Что я уже пробовал:

struct CStreamCopyUtilProxy
{
                    template<bool TT, size_t ArrSize>
                    friend struct CStreamCopyUtilContainer;

                private:
                    const CustomResponseStreamWriter m_writeFunc = nullptr;

                    std::vector<char>** m_container = nullptr;

                public:
                    const CustomResponseStreamWriter Claim(std::vector<char>* myBin) const noexcept
                    {
                        if ((*m_container) != nullptr)
                        {
                            return nullptr;
                        }

                        (*m_container) = myBin;

                        return m_writeFunc;
                    }

                    const void Release() const noexcept
                    {
                        (*m_container) = nullptr;
                    }

                private:
                    constexpr CStreamCopyUtilProxy(const CustomResponseStreamWriter writeFunc, std::vector<char>** cont) noexcept : m_writeFunc(writeFunc)
                    {
                        m_container = cont; //getting error here
                    }
};

Manish K. Agarwal

(*m_container) = myBin; не допускается в функции const

Member 14087451

я получаю здесь ошибку
m_container = продолжение;
Ошибка C3249 незаконный акт или суб-выражение для функции функция constexpr'

Richard MacCutchan

Я только что скомпилировал это с помощью Microsoft (R) C/C++ оптимизирующий компилятор версии 19.15.26732.1 для x64, и он был составлен чисто.

Kornfeld Eliyahu Peter

Это интересно - вы, вероятно, скомпилировали с помощью C++ 14, а не 11...
конструктор constexpr не должен иметь никакого тела под 11, но получил расширение под 14...
Для меня (GCC 7.1.1) он компилируется только в том случае, если нет тела...

Richard MacCutchan

Это не то, что я использовал раньше, но в документации говорится, что его можно использовать для функций и конструкторов, как в приведенном выше примере. К сожалению, никогда не ясно, какая версия компилятора поддерживает какой уровень языка.

Kornfeld Eliyahu Peter

Вы проверили все требования к функции constexpr?
https://en.cppreference.com/w/cpp/language/constexpr

Member 14087451

я скомпилировал его в vs2015 году

Richard MacCutchan

Который может не поддерживать последнюю версию C++.

Kornfeld Eliyahu Peter

VS2015 поддерживает функцию C++ 11 'constexpr', однако такой метод - в соответствии с C++ 11 - не должен иметь тела!!!
Он поддерживается только с C++ 14...

Member 14087451

хорошо спасибо сэр

0 Ответов