kitsu
Чего-то не могу найти способ получение индекса енама по соответствующему FieldDescriptor в protobuf
kitsu
field->enum_type()->index() возвращает индекс во внешней структуре. Есть EnumValueDescriptor::number, но до него какой-то нетривиальный путь, если и есть
Berkus
про это даже в чатике раста пишут
в чатике раста было так много даунов что я ливнул
Alexander "SonnySlave"
ага
Evgenii
в чатике раста было так много даунов что я ливнул
с таким подходом можно отовсюду ливнуть
kitsu
А const-qualifier в типе const auto& как параметр лямбд всегда лишний?
kitsu
ну, кроме читаемости и невозможности изменять внутри
Egor
А const-qualifier в типе const auto& как параметр лямбд всегда лишний?
Ещё нельзя будет передавать временное значение в качестве параметра (если не писать const)
Ivan
Погодите, а класс в котором все функции virtual = 0, почему бы не назвать интерфейсом?
Ivan
Это и есть интерфейс
Egor
Ну и если в нём поля отсутствуют, то назвать можно, да. Только чтобы он совсем стал интерфейсом в стиле Java, надо от него делать виртуальное наследование.
Ivan
Ну да.
Egor
Ну, да, в этом и проблема: https://godbolt.org/g/TmVjtE
kitsu
Ну, да, в этом и проблема: https://godbolt.org/g/TmVjtE
а, const позволяет, забавно Но тип же должен выведестись в const lvalue
Egor
Видимо, всё-таки не должен.
Egor
Но тут нужен кто-то, кто махнёт рукой на нужное правило вывода.
Matwey
@berkus https://github.com/boostorg/smart_ptr/pull/46
Berkus
оке, завтра зашлю в слаку, комп на работе остался
Matwey
Вот правильный подход
Matwey
Надо тоже компы на работе оставить все
Matwey
А дома не втыкать в эти ваши гитхабы
Berkus
молодцы)
Berkus
петер крутой
kitsu
А можно как-то разделять member specialization вместе с void template arg? (не компилится, но очень хочется) template<typename T, typename Derived = void> struct S { void f(); } template<typename T, typename> void S<T>::f() { //use fallback } template<typename T, typename Derived> void S<T, Derived>::f() { //use derived }
Berkus
можно, пиши явную специализацию для void
Berkus
template<typename T, void> void S<T>::f() { //use fallback }
kitsu
чорт, так просто
kitsu
Спасибо
Egor
Кажется, что скорее template<typename T> void S<T, void>::f() {}, если я правильно понял.
kitsu
template<typename T, void> void S<T>::f() { //use fallback }
a non-type template parameter cannot have type 'void' :(
Berkus
a non-type template parameter cannot have type 'void' :(
https://wandbox.org/permlink/IL1Nql5tNvUUIb0f
Berkus
ты перемудрил, надо еще проще
kitsu
https://wandbox.org/permlink/IL1Nql5tNvUUIb0f
Ну, в тривиальном случае да, сойдет но хотелось бы вовне определения класса
Berkus
у тебя функция не темплейтная же
kitsu
Реальный класс сложный, чтобы его дублировать
Berkus
сделай его базовым
Viacheslav
Можно вытянуть всю общую функциональность в базовый класс, если позволяет.
kitsu
не, низя, он в середине иерархии наследований
kitsu
во всяком случае мог быть
Vyacheslav
Всем примет. А подскажите что делаю не так
Vyacheslav
void Data2Buffer(char *macro); void Data2Buffer(macro = 0) {
Vyacheslav
error: expected ';', ',' or ')' before '=' token
Vyacheslav
ругается компилятор
Ivan
тип не дописал перед macro?
Ivan
#supapro
Ivan
как там это делается, я не умею
Vyacheslav
как так то?
Vyacheslav
void Data2Buffer(char *); void Data2Buffer(char* macro) {
Vyacheslav
так ОК
Vyacheslav
а стоит вставить одно = и всё
B
кто-нибудь использовал эту либу? http://www.pcg-random.org/ и вообще, кто что использует для RNG и PRNG? чем сидируете PRNG?
Berkus
а стоит вставить одно = и всё
в определении нельзя =, только в декларации
Berkus
ну или совмести одно с другим если это инлайн
Vyacheslav
а можно пример,
Vyacheslav
void Data2Buffer(char *, int v1 = 0); void Data2Buffer(char* macro, v1) {
Vyacheslav
такое не работает
Berkus
чойта, работает, только тип надо для всех аргументов указывать
Vyacheslav
= в принципе работать не хочет
Vyacheslav
хз
Vyacheslav
может это фишка обычных С? не ++
Ivan
ээ ? https://ideone.com/AMaILI
Vyacheslav
void Data2Buffer(char macro[], int v1 = -1, int v2 =-1, int v3=-1, int v4=-1, int v5=-1, char * str = 0, bool send = 0) {
Vyacheslav
на ардуино писал так
Anonymous
Привет
Anonymous
Кто хоть немного шарит в квантовых компах?
Anonymous
/stat@combot
Anonymous
Японцы открыли доступ всем желающим к имитатору в облаке
Viacheslav
на ардуино писал так
Ну так тебе и посоветовали, что либо совместить объявление и тело функции, либо дефолтные аргументы оставить только в объявлении, а в definition уже просто типы все указать.
Vyacheslav
дефольные параметры не пашут ни при каком раскладе
Vyacheslav
void Data2Buffer(char* macro, int v1, int v2, int v3, int v4, int v5, char* str, int send) {
Vyacheslav
вот тело
Vyacheslav
стоит добавить хоть одно =
Vyacheslav
и всё
Ivan
ну, параметры по умолчанию в серединку нельзя добавлять, только с конца их можно добавлять
Vyacheslav
http://www.dropbox.com/s/bf2tf5lkjsain2k/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202017-11-29%2000.03.39.png?dl=0