Animal
http://cpp.sh/4ibx7 есть ли вариант сделать так, что бы вот в этом примере operator== для класса B вызвался из того же name space , что и вызывающий его operator== для класса A?
Animal
Вернее, есть ли в принципе такая возможность? Я думал, что так сработает, но не получилось. Какие -то другие варианты может есть?
Денис
Всем привет.
Денис
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) и одного понять не могу - работает эта штука запуская демона на смартфоне, который общается с сервером на хост машине. В собраном виде это одна экзеха. Вот собсно вопрос: откуда берется этот демон на устройстве?
MrSmith
Dr. Friedrich
Олександр
ADB есть в любом Android
MrSmith
Олександр
Он выключен, если не включать его специально в настройках разработчика
Александр
https://wg21.link/P0672
Интересное предложение
Александр
И это
https://wg21.link/P0624
🦥Alex Fails
Paul
Vladislav
https://github.com/rep-movsd/see-phit
Anonymous
мать твою
Алдар
пора веб фреймворк на плюсцах пилить
Anonymous
что только народ не делает, чтобы показать свои знания C++
Anonymous
был же
Anonymous
или тебе compile-time надо?
MrSmith
Олександр
Где прорекламили, признавайтесь)
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*).
Vladislav
Evgenii
Evgenii
вот такая функция работает и с указателем
Vladislav
запрети через is_pointer<..>
Evgenii
типа float, size_t, float *
Evgenii
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
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
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
Evgenii
вообще-то нет
Крылатый
MrSmith
Сходите к бобуку, пропиаритесь заодно
Mikhail
он кстати есть тут?
Mikhail
или теперь посещяет исключительно паблики мелкософта
Ioann_
Ruslan
итератор - оболочка вокруг указателя
Олександр
Нет
Ioann_
все таки не каждый итератор умеет в operator +, а вот указатель всегда.
Ruslan
это зависит от того, для чего он предназначеен
Ioann_
В идеале vs должна бы итератор вектора оптимайзить в указатель.
Evgenii
Evgenii