Opened 4 years ago

Closed 4 years ago

#1053 closed ожидается проверка (задача сдана)

WW #18

Reported by: gordeeva.tatyana Owned by: Vasily Alferov
Component: WW_format Version:
Keywords: Cc:

Description


Change History (1)

comment:1 Changed 4 years ago by Vasily Alferov

Resolution: задача сдана
Status: assignedclosed

Очень круто, тут 9/10.

По корректности замечаний нет, всё работает.
По коду пара мелких замечаний, думаю, больше балла это всё не стоит.
(За первое из них не снимается офк)

Раз

// strlen is not constexpr

Увы. Правда, похоже, что g++ (как минимум), инлайнит и оптимизирует функции cstring, так что у меня он это проглатывал что когда ты со мной советовалась, что сейчас. Поэтому я и не заподозрил, что советую что-то странное: проверил на коленке, что работает, и отослал. Тем не менее, в стандарте он не constexpr ни тогда, ни сейчас. В обсуждениях РГ21 нагуглил предложение сделать пропозал, чтобы они стали constexpr. Обсуждение от 19 года, соответственно, раньше чем в C++23 это не произойдёт.

Там же, кстати, нашлось честное constexpr решение, имхо немного более изящное, чем sizeof("false") - 1:

static constexpr size_t size = std::string_view("false").length();

У std::string_view есть constexpr-конструктор, и метод length тоже constexpr. Такой вот чистый незамутнённый C++17.

Два

FormatHelper<T>::instantiated != 0

Лол.

Три

explicit FormatHelper<T, std::enable_if_t<std::is_integral_v<T>>>(T val) : val_(val) {}

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

explicit FormatHelper(T val) : val_(val) {}

Четыре

static constexpr size_t size = std::numeric_limits<unsigned long long>::digits10;

А почему unsigned long long, а не T?

Note: See TracTickets for help on using tickets.