Size: a a a

2020 October 16

АК

Александр Караев... in pro.cxx
Danya
А как компайл-таймово ходить в БД?)
ну я не про поход в БД, а про валидацию кода, который в рантайме пойдёт в БД
источник

МВ

Макс Воробьев... in pro.cxx
Danya
А как компайл-таймово ходить в БД?)
в кт только проверки и генерации запросов
источник

АК

Александр Караев... in pro.cxx
Макс Воробьев
а можно еще UDA из D стянуть ? ^^
над рефлексией работают, но именно с атрибутами проблема - их наличие или отсутствие не должно менять наблюдаемого поведения, ЕМНИП
источник

D

Danya in pro.cxx
Александр Караев
ну я не про поход в БД, а про валидацию кода, который в рантайме пойдёт в БД
А ну понял
источник

D

Dmitriy in pro.cxx
Alex
Эх... Спасибо. А как в компайл тайм узнать длину литерала? Я не могу его принять по char[N].
contexpr strlen?
источник

N

Neargye in pro.cxx
Alex
Эх... Спасибо. А как в компайл тайм узнать длину литерала? Я не могу его принять по char[N].
источник

PS

Pavel Samolysov in pro.cxx
Новое поколение ORM каких-нибудь, это интересный кейс, большое спасибо.
источник

A

Alex in pro.cxx
о, спасибо
источник

D

Danya in pro.cxx
Alex
о, спасибо
Если ты принимаешь литерал в шаблонном параметре, то так нельзя
источник

A

Alex in pro.cxx
почему это?
источник

A

Alex in pro.cxx
ну и я принимаю не литерал (это не компилится), а const char*
источник

D

Danya in pro.cxx
NTTP не может ссылаться на string literal object по стандарту
источник

IZ

Ilia Zviagin in pro.cxx
@beznazvanya_bot, перенесено в @supapro
источник

O

Ofee in pro.cxx
Александр Караев
например, ты на типах описываешь схему таблицы в БД - если имена таблиц/полей и прочего будут вшиты в тип, ты сможешь на стадии компиляции валидировать, что пользователь не дурак.

не select("field") с рантайм эксепшеном, а select<"field">() с компайл-тайм ошибкой, если "field" не существует
Может быть, завести тогда шаблонный тип-обёртку для полей в БД и вызывать так:
select<field_t>() ? Помимо диагностики ошибок в компилтайме, мы ещё и автодополнение от среды получим
источник

АК

Александр Караев... in pro.cxx
Ofee
Может быть, завести тогда шаблонный тип-обёртку для полей в БД и вызывать так:
select<field_t>() ? Помимо диагностики ошибок в компилтайме, мы ещё и автодополнение от среды получим
до 20-го стандарта так и поступали, но впрочем речь не всегда про тупой матчинг строк, кто-то в компайл-тайме разбирает sql<"SELECT field FROM table">
источник

PS

Pavel Samolysov in pro.cxx
А кстати непонятно, почему число и сейчас можно передавать как параметр (хм, сейчас, ну пусть будет в C++17), а для остальных типов сделали только в C++20? Числа не объекты или в чем разница?
источник

АК

Александр Караев... in pro.cxx
Pavel Samolysov
А кстати непонятно, почему число и сейчас можно передавать как параметр (хм, сейчас, ну пусть будет в C++17), а для остальных типов сделали только в C++20? Числа не объекты или в чем разница?
там было много проблем с определением эквивалентности двух типов, параметризованных произвольным объектом.

в каком случае &f<a> == &f<b>?

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1907r1.html - в этой бумаге есть много ссылок на другие бумаги, где всё это обсуждалось
источник

PS

Pavel Samolysov in pro.cxx
Интересно, спасибо.
источник

ПК

Побитый Кирпич... in pro.cxx
Александр Караев
над рефлексией работают, но именно с атрибутами проблема - их наличие или отсутствие не должно менять наблюдаемого поведения, ЕМНИП
Надо сделать особые атрибуты без этой фигни. И позволить юзеру свои определять
источник

АК

Александр Караев... in pro.cxx
Побитый Кирпич
Надо сделать особые атрибуты без этой фигни. И позволить юзеру свои определять
согласен
источник