Ошибка в моем коде 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
хорошо спасибо сэр