похоже на баг компилятора, гсс и кланг все ок
#include <string_view>
#include <iostream>
void foo()
{
constexpr std::string_view s1 = (std::string_view{"(&struct_var)->somefield"}).substr(15, 9);
constexpr std::string_view s2{"somefield"};
constexpr auto b1 = std::char_traits<char>::compare(s2.data(), s1.data(), 9);
const auto b2 = std::char_traits<char>::compare(s2.data(), s1.data(), 9);
auto b3 = std::char_traits<char>::compare(s2.data(), s1.data(), 9);
std::cout << b1;
std::cout << b2;
std::cout << b3;
}
``` #include <string_view> #include <iostream> void foo() { constexpr std::string_view s1 = (std::string_view{"(&struct_var)->somefield"}).substr(15, 9); constexpr std::string_view s2{"somefield"}; constexpr auto b1 = s1 == s2; const auto b2 = s1 == s2; auto b3 = s1 == s2; std::cout << b1; std::cout << b2; std::cout << b3; } ``` Аналогично дает неверные результаты
000 на 19.20.27508.1 for x64
Обсуждают сегодня