Обновить
10

Пользователь

0,3
Рейтинг
7
Подписчики
Отправить сообщение

И что писать в result , если произошла ошибка? Опять какое-нибудь optional. И чем, тогда, это лучше простого expected? С ним ты точно так же можешь сделать, если ошибка или её часть - enum.

Да, я там не прав, но ты ищешь, где придраться, когда как тот шаблон нифига не explicit. И ещё, если он был бы explicit , он не был бы отброшен после точного соответствия в пользу приведения типов аргументов, была бы ошибка компиляции. Так что это ещё одна ложь, галлюцинация ИИ: Он отбрасывает правильный конструктор (It first, End last)

Это называется послал. Нахрен здесь ссылка на 164 репозитория. Иди в анус и возвращайся оттуда с демо-кодом. А так, это было похоже на попытку натравить ИИ на проект и написать статью на основе его галлюцинации с целью обосрать C++.

Когда у оппонента нет аргументов, он переходит на личности. Не говори, что мне читать, а я не скажу, куда тебе пойти.

У тебя логическая ошибка уже на первом шаге, а ты докопался до второго. Так что давай минимальный пример с #include и main(), а не кусочки кода.

Не воспроизводится. Не можешь угомониться? Ты бы хоть проверил текст ИИ, которого ты принуждаешь согласиться с тобой.

a.begin() - всё ещё 'std::basic_string_view::const_iterator' {aka 'const char*'} .

Так же first - это const char* .

Он отбрасывает правильный конструктор (It first, End last), потому что тот помечен как explicit

Хватит врать! Нет там explicit. Ты хоть знаешь для чего он? Он не имеет смысла для конструктора с двумя параметрами.

а фигурные скобки запрещают явные конструкторы

Какой-то бред.

В блоке кода можно указать язык

Не указан - нет раскраски
Не указан - нет раскраски
Указан - есть раскраска
Указан - есть раскраска

Дополню. Вообще, если статья была бы правдой, то неверный результат возник бы раньше, а не после добавления "/com/swtSyst". Возник бы вопрос, почему не приходят события "fan/tach".

Расходимся! Это очередной высер, чтобы поднасрать С++.

std::ranges::mismatch(a, b) намекает на C++20 или новее, а в нём есть конструктор (5)

template< class It, class End >
constexpr basic_string_view( It first, End last );

И простой тест показывает правильный результат "/"

#include <iostream>
#include <ranges>
#include <string_view>

constexpr std::string_view commonPrefixOfTwo(std::string_view a,
                                             std::string_view b) {
  auto [first, last] = std::ranges::mismatch(a, b);
  return {a.begin(), first};  // Запомните эту строчку!
}

int main() {
  constexpr auto common =
      commonPrefixOfTwo("/xyz/openbmc_project/sensors/", "/com/swtSyst");
  std::cout << common << "\n";
}


Да и в С++17 без ranges это бы не скомпилировалось. Потому что никаких неявных преобразований const char* в size_t не происходит!

error: no matching constructor for initialization of 'std::string_view' (aka 'basic_string_view<char>')
    note: candidate constructor not viable: no known conversion from 'const char *const' to 'size_type' (aka 'unsigned long') for 2nd argument; dereference the argument with *

Код AnyProcessor::Model становится немного короче если использовать часто незаслуженно забываемое множественное наследование:

  template <typename Processor>
  struct Model final : Concept, Processor {
    explicit Model(Processor&& processor) : Processor(std::move(processor)) {}

    void process(double value) override { Processor::process(value); }
  };

@matweu Почему не указываешь язык в блоках кода?

<...> после std::move объект находится в валидном, но неопределённом состоянии. <...>

Для std::string обычно это пустая строка.

Вообще это ни сколько не обычно. Автор упускает из виду оптимизацию коротких строк.

Да почини уже код. Из-за своих многоточий не видишь ошибок.

Всё ещё инвалидный код после правки.

Многоточия только засоряют код. Это так важно показать, что что-то ещё там может быть?

using OpVariant = std::variant<AddOp, MulOp, XorOp>;
    std::vector<OpVariant> data;
...
        if (i % 3 == 0) data.push_back(std::make_unique<AddOp>());
        else if (i % 3 == 1) data.push_back(std::make_unique<MulOp>());
        else data.push_back(std::make_unique<XorOp>());

против:

using OpVariant = std::variant<AddOp, MulOp, XorOp>;
    std::vector<OpVariant> data;
...
        if (i % 3 == 0) data.push_back(std::make_unique<AddOp>());
        else if (i % 3 == 1) data.push_back(std::make_unique<MulOp>());
        else data.push_back(std::make_unique<XorOp>());

Автор - писатель, а не читатель. Вычитка где? В чём разница этих одинаковых инвалидных блоков? И в чём состоит сакральный смысл многоточий?

Самсунг - унылое г. Купил их sd с 10-летней гарантией, так она сдохла через 2 года.

изучение основ C/C++

Это что за язык программирования такой?

Вычитывать пост следует до публикации, чтобы абзацы не повторялись.

Это очень упрощённый пример. В общем случае нужно будет сравнивать границы памяти, указатели на больше/меньше. А здесь уже засада. Отношения указателей, не указывающих в один storage - это UB.

Может быть, поэтому контракты не зашли, надо будет убрать этот UB.

Странный заголовок с числом ни разу не упомянутым в статье.

Так где часы то?

Убрали цифровую версию!

Или вот другой вариант:

void set_it(std::atomic<int>* p) {

Статья про C внезапно перетекала в про C++.

1
23 ...

Информация

В рейтинге
2 773-й
Зарегистрирован
Активность