Size: a a a

2020 September 25

ГЙ

Гулящий Йожег... in pro.cxx
Спасибо.
источник

AK

Andrei K in pro.cxx
Vyacheslav Olkhovchenkov
ну хорошо, с inline переменными понятно. давайте теперь про static inline
Основное назначение статик-инлайн — это делать хедер-онли библиотеки.
источник

AK

Andrei K in pro.cxx
Потому что статик инлайн позволяет инициализировать переменную прям в том же TU. Без надобности заводить .cpp
источник

ПК

Побитый Кирпич... in pro.cxx
Andrei K
Основное назначение статик-инлайн — это делать хедер-онли библиотеки.
static в хэдере никто не делает
источник

ПК

Побитый Кирпич... in pro.cxx
Andrei K
Потому что статик инлайн позволяет инициализировать переменную прям в том же TU. Без надобности заводить .cpp
Это inline позволяет, статик тут не нужен
источник

VO

Vyacheslav Olkhovche... in pro.cxx
это больше похоже не на какое-то объяснение, а набор бессмбысленных заклинаний.
источник

ПК

Побитый Кирпич... in pro.cxx
static inline == static
источник

AK

Andrei K in pro.cxx
Побитый Кирпич
Это inline позволяет, статик тут не нужен
Если речь про статик как про поле. А не про линковку.
источник

VO

Vyacheslav Olkhovche... in pro.cxx
Побитый Кирпич
static в хэдере никто не делает
static в хедере я вполне могу представить.
источник

AK

Andrei K in pro.cxx
Статические поля-то нужны.
источник

ПК

Побитый Кирпич... in pro.cxx
Andrei K
Статические поля-то нужны.
Это другой статик
источник

AK

Andrei K in pro.cxx
Я знаю, я так и сказал :)
источник

ПК

Побитый Кирпич... in pro.cxx
Тут речь про линковку все же как я понимаю
источник

AT

Anatoly Tomilov in pro.cxx
про линковку
источник

AK

Andrei K in pro.cxx
Я не могу придумать валидный смысл для линковки. Но для статической переменой смысл именно такой как я сказал, теперь стало можно статические мемберы инициализировать в хедере.
источник

AK

Andrei K in pro.cxx
Ну и в целом out of class definition не нужен.
источник

ПК

Побитый Кирпич... in pro.cxx
Vyacheslav Olkhovchenkov
это больше похоже не на какое-то объяснение, а набор бессмбысленных заклинаний.
А что непонятно?
источник

VO

Vyacheslav Olkhovche... in pro.cxx
непонятно всё (не у тебя, а у андрея к)
источник

D

Danya in pro.cxx
David Sorokin
А именно, допустим есть некоторый тип «Activity<Item, Impl = …>» с автоматическим преобразованием в «Activity<Item>», то есть, когда Impl становится неким стандартным. Теперь я хочу создать концепт «template<typename From, To> concept ActivityLike = std::convertible_to<From, Activity<To>>». Далее, есть куча функций вида «template<typename MapItem, typename MapFn> auto map(MapFn&&)», где автоматически выводится тип результата. Там получается что-то типа «Activiity<MapItem, SomeComplexImpl>». Вот, и я хочу в сигнатуре функции явно сказать, что некий выводимый тип результата Res удовлетворяет концепту «ActivityLike<Res, MapItem>». Все было бы просто, если бы в коде можно было бы явно ссылаться на тип Res, но он выводится, и там стоит «auto». Если попытаться ввести Res явно, то ломается выводилка типов у GCC. Может, у кого есть идеи? Или просто укажите хорошее введение по концептам с погружением. Все утро перед работой голову ломал. Если что, это хобби в свободное время. Коллег так мучать не стал бы)
UPD: кажется, я был не прав
Сейчас открыл Release notes для CLion 2020.2 — можно констрейнить возвращаемое значение
https://blog.jetbrains.com/clion/2020/07/clion-2020-2-makefile-cpp20-doctest/
источник

A

Albyc in pro.cxx
Andrei K
inline — это разрешение иметь много определений, static — это способ линковки.
Получается, у inline это основная функция? Часто замечал в проектах использование inline один раз для одного определения и последующего встраивания компилятором. Это даёт какой-то буст по скорости?
источник