Animal
http://cpp.sh/4ibx7 есть ли вариант сделать так, что бы вот в этом примере operator== для класса B вызвался из того же name space , что и вызывающий его operator== для класса A?
Animal
Вернее, есть ли в принципе такая возможность? Я думал, что так сработает, но не получилось. Какие -то другие варианты может есть?
⁣Денис
Всем привет.
⁣Денис
http://cpp.sh/4ibx7 есть ли вариант сделать так, что бы вот в этом примере operator== для класса B вызвался из того же name space , что и вызывающий его operator== для класса A?
Поясни вопрос. Сейчас у тебя есть неймспейс Debug_Compare, в нём operator== для А и для Б. Еще в классах есть operator== для А и Б. Но они не вызываются никак. Какой именно operator== и откуда ты хочешь вызвать?
⁣Денис
Вернее, есть ли в принципе такая возможность? Я думал, что так сработает, но не получилось. Какие -то другие варианты может есть?
Подними определние operator== для B в неймспейсе перед А. А внутри А явно вызови Debug_Compare::operator==. namespace Debug_Compare { bool operator==(const B& arg1, const B& arg2) { std::cout << "Debug_Compare B" << std::endl; return arg1.bVariaable == arg2.bVariaable; } bool operator==(const A& arg1, const A& arg2) { std::cout << "Debug_Compare A" << std::endl; return Debug_Compare::operator==(arg1.b, arg1.b); } }
Animal
Ну да, так безусловно можно, но у меня таких классов пару десятков в сериализаторе) и некоторые из них не просто композиция, а обернутые в boost::optional, который имеет внутри подходящий оператор сравнения, но там вызывается просто return this->b==rhs.b. естественно, код буста менять не самая лучшая идея)
Animal
Подними определние operator== для B в неймспейсе перед А. А внутри А явно вызови Debug_Compare::operator==. namespace Debug_Compare { bool operator==(const B& arg1, const B& arg2) { std::cout << "Debug_Compare B" << std::endl; return arg1.bVariaable == arg2.bVariaable; } bool operator==(const A& arg1, const A& arg2) { std::cout << "Debug_Compare A" << std::endl; return Debug_Compare::operator==(arg1.b, arg1.b); } }
Animal
Поэтому я ищу возможность все таки сделать так , что бы операторы вызывали другие операторы из того же пространства имен. Баловаться с линковкой не хочется, ибо слишком жирно по две цели на проект в cmake. С макаросами идея тоже не очень, потому что отладочные и обычные операторы почти полностью отличаются.
Animal
Буст внутри вызовет версию inline ,а не отладочную из, если можно так сказать, родительского отладочного оператора
Animal
Если в моем примере вместо B b сделать boost::optinal<B> b, то вызвать другую реализацию у меня не получится, потому что не я вызывать ее буду. Правда сейчас пришла мысль, а нельзя ли в буст свои компаратор передавать. Сейчас посмотрю. А так наверное да, я просто много хочу
Animal
Окей, спасибо)
Arseny
Может 1 байт прийти.
Александр
0 не придёт
Arseny
0 не придёт
Если пришло 0 байт, значит соединение закрыли с другой стороны.
Paul
Всем привет. Курю сорцы ADB (Android Debug Bridge) и одного понять не могу - работает эта штука запуская демона на смартфоне, который общается с сервером на хост машине. В собраном виде это одна экзеха. Вот собсно вопрос: откуда берется этот демон на устройстве?
Paul
Предпологаю что в приложение вставляется при флаге дебаг
Если не сложно, поясни либо линком в меня кинь, где инфу можно раскурить
Олександр
ADB есть в любом Android
MrSmith
ADB есть в любом Android
А это безопасно?
Олександр
Он выключен, если не включать его специально в настройках разработчика
Александр
https://wg21.link/P0672 Интересное предложение
Александр
И это https://wg21.link/P0624
Vladislav
https://github.com/rep-movsd/see-phit
Anonymous
мать твою
Алдар
пора веб фреймворк на плюсцах пилить
Anonymous
что только народ не делает, чтобы показать свои знания C++
Anonymous
был же
Anonymous
или тебе compile-time надо?
Олександр
Где прорекламили, признавайтесь)
Nikita
Где прорекламили, признавайтесь)
Отсюда, вероятно https://t.me/itrecruitergroup
Svetlana
Привет, этот чат у нас для рекрутеров, если интересно общение с рекрутерами вот специальный чатикhttps://t.me/job4it
Evgenii
Почему VS относится к указателю как к итератору
Evgenii
опредляя для него tag, value_type и тд
Evgenii
и как мне сделать две функции в студии - одну для указателя, вторую для итератора?
Vladislav
потому что указатель - итератор)
Vladislav
The iterator_traits class template comes with a default definition that obtains these types from the iterator type itself (see below). It is also specialized for pointers (T*) and pointers to const (const T*).
Grigory
и как мне сделать две функции в студии - одну для указателя, вторую для итератора?
а так не получится? template<typename T> void func(T* ptr) { std::cout « "i'm pointer\n"; } template<typename T> void func(T it) { std::cout « "i'm iterator\n"; }
Evgenii
вот такая функция работает и с указателем
Vladislav
запрети через is_pointer<..>
Evgenii
типа float, size_t, float *
Evgenii
запрети через is_pointer<..>
уже как раз нагуглил
Grigory
template<typename T> void func(T c, std::size_t size, T* dst) { std::cout « "i'm pointer\n"; } template<typename Iter> void func(typename std::iterator_traits<Iter>::value_type c, std::size_t size, Iter dst) { std::cout « "i'm iterator\n"; }
Grigory
тебе же 2 нужны?
Evgenii
один в один
Александр
А зачем отличать указатели? Можно сказать, что они random access и радоваться
Grigory
вот это и не собертся
я продолжил ) template<typename T> void func(typename std::iterator_traits<T*>::value_type c, std::size_t size, T* dst) { std::cout << "i'm pointer\n"; } template<typename Iter> void func(typename std::iterator_traits<Iter>::value_type c, std::size_t size, Iter dst) { std::cout << "i'm iterator\n"; }
Evgenii
А зачем отличать указатели? Можно сказать, что они random access и радоваться
тем что когда передаю указатель я подразумеваю Contiguous iterator
Evgenii
и там оптимизация
Александр
Разумно
Evgenii
а тага для него нет
Evgenii
что-то он там ломает, так и не разобрался что
Александр
Нужен constexpr switch по тагам
🦥Alex Fails
Наши чаты: @supapro – чат для начинающих и тех, кто хочет изучить язык; @fludpac – флуд сюда; @pro_net – чатик по .NET; Наши каналы: @ProCxxNews – новости и мероприятия; @ProCxxChannel – небольшие заметки и ссылки; @ProCxxJobs – вакансии; @xthon – цитатник; Ближайшее мероприятие C++ Syberia – https://t.me/ProCxxNews/43 Правила чата Команда /rules. Чтобы она сработала, надо стартануть @gbreborn_bot --------- Мы тут пилим подкаст по плюсам и нам нужна небольшая помощь с выбором ведущего (ведущих): https://goo.gl/forms/RfS9Sk4Z56ldoThJ2
Dr. Friedrich
@AlexFails, я бы сначала про подкаст добавил, а потом остальное
Dr. Friedrich
А то самое главное не заметят.
Evgenii
Крылатый
А то самое главное не заметят.
А ты не хочешь поучаствовать в подкасте?
Dr. Friedrich
А ты не хочешь поучаствовать в подкасте?
В ближайшее время (месяц-два) точно нет.
Evgenii
вообще-то нет
Крылатый
MrSmith
Сходите к бобуку, пропиаритесь заодно
Mikhail
он кстати есть тут?
Mikhail
или теперь посещяет исключительно паблики мелкософта
Ruslan
итератор - оболочка вокруг указателя
Олександр
Нет
Ioann_
все таки не каждый итератор умеет в operator +, а вот указатель всегда.
Ruslan
это зависит от того, для чего он предназначеен
Ioann_
В идеале vs должна бы итератор вектора оптимайзить в указатель.