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

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

 



The string_view object is created at runtime, for example this code passes:
#include <stdlib.h>
#include <iostream>
#include <string_view>
#include <vector>

int main(int argc, char* argv[], char* envp[]) {
  std::vector<std::string_view> args(argv, argv + argc);

  for (auto& i: args)
    std::cout << i << std::endl;

  return EXIT_SUCCESS;
}


> On 19 Dec 2024, at 15:34, Yu Sheng Oh via Gcc-help <gcc-help@xxxxxxxxxxx> wrote:
> 
> Hi guys,
> 
> May I know why the compilation failed for the following code where the
> compiler is complaining that `s` is not a constant expression? While
> removing the `static_assert`, the compilation passed. Regards.
> 
>  1 #include <array>
>  2 #include <string_view>
>  3 #include <cstddef>
>  4
>  5 template<std::size_t N>
>  6 constexpr std::array<int, N> test(std::string_view s)
>  7 {
>  8   static_assert(s.size() > N);
>  9   return { 0 };
> 10 }
> 11
> 12 int main(int argc, char *argv[])
> 13 {
> 14   using namespace std::literals;
> 15   constexpr auto s = "123"sv;
> 16   constexpr auto a = test<2>(s);
> 17   return 0;
> 18 }






[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