Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
funkcja constexpr "function" nie może spowodować wyrażenia stałego
Uwagi
Nie można ocenić funkcji jako constexpr w czasie kompilacji. Aby mieć constexprwartość , funkcja może wywoływać tylko inne constexpr funkcje.
Przykład
Program Visual Studio 2017 poprawnie zgłasza błąd, gdy lewy operand operacji oceny warunkowej jest nieprawidłowy w constexpr kontekście. Poniższy kod kompiluje się w programie Visual Studio 2015, ale nie w programie Visual Studio 2017.
// C3615.cpp
// Compile with: /c
template<int N>
struct myarray
{
int size() const { return N; }
};
constexpr bool f(const myarray<1> &arr)
{
return arr.size() == 10 || arr.size() == 11; // C3615 starting in Visual Studio 2017
}
Aby rozwiązać ten problem, zadeklaruj array::size() funkcję jako constexpr lub usuń constexpr kwalifikator z f.