Re: constant expression context for `std::string_view`

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the clarification.

On Fri, 20 Dec 2024, 4:30 pm David Brown, <david.brown@xxxxxxxxxxxx> wrote:

>
> On 20/12/2024 04:13, Yu Sheng Oh via Gcc-help wrote:
> > Cool, thanks. The original code was using `std::array` as the function
> > parameter, but when I changed it to `std::string_view`, it broke the
> > compilation. Both `size()` functions are non-static members, which
> > makes me think that if the context is a constant expression, then
> > static_assert should apply. To conclude, if an object is not
> > constant-evaluated syntactically in a local context (in this case as a
> > function parameter), the compiler still will look at the constexpr
> > member function definition to determine if it could be consteval in a
> > constant expression context, am i correct? Cheers.
> >
>
> A key difference is that with std::array<>, s.size() is a constant
> expression regardless of whether or not /s/ is a constant expression.
> The size of a std::array<> is part of its type, which is always a
> constant expression, while the size of a string view is a run-time value
> and can only be a constant expression if the string view itself is a
> constant expression.
>
> David
>
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux