Alexander
Он по умолчанию на маке идет
Levon
А, я понял
Alexander
Можно прикрутить с помощью костылей GDB, но такое
Levon
Недавно узнал, что после методов класса можно писать всякие спецификаторы типа volatile
Levon
До недавнего времени думал, что только const final и override можно
Levon
Оказалось ещё много чего типа & или &&
Matwey
Не ты первый. Тут обсуждалось что можно перегружать функцию по спецификатору volatile, но никто так и не придумал зачем
Levon
Кстати, действительно, а зачем? Не думаю, что есть какое то практическое применение
Levon
Что-то наряду с протектед наследованием
Levon
Есть, а где использовать не понятно
Matwey
http://en.cppreference.com/w/cpp/utility/optional/value например вот зачем
Berkus
Можно прикрутить с помощью костылей GDB, но такое
почему костылей? brew install gdb по идее
Levon
это ещё зачем, кстати)
Для lvalue и rvalue объектов
Alexander
почему костылей? brew install gdb по идее
Только с dyld проблемы на сиерре
Berkus
а, ну это может быть, всё равно lldb лучше
Alexander
Не спорю, потому и пытаюсь подцепить в креатор
Levon
это ещё зачем, кстати)
Что то типа вот такого void f() & {} // lvalue void f() && {} // rvalue
Levon
Это методы класса разумеется
Anonymous
ну поведение примерно пониманю, первое вызывается при обращении через lvalue-ссылку, второе через универсальную
Anonymous
а, ну, да
Anonymous
ближе к часу ночи понимание происходящего спадает)
Matwey
Кстати, прикольно
Причем внутри эти 4 функции реализованы одинаково скорее всего :(
Matwey
В смысле буквенного кода
Levon
Угу, это все для дедюса типа
Matwey
Хотя не уверен про &&
Денис
🦋
Anatoly
Qt 5.9.2 зарелизился, 300 багов зафиксили, новых фич не добавляли: http://blog.qt.io/blog/2017/10/06/qt-5-9-2-released/
Anatoly
Плюс зарелизили Qt Creator 4.4.1 на базе Qt 5.9.2: http://blog.qt.io/blog/2017/10/06/qt-creator-4-4-1-released/
Billy
Специальность
Какая специальность?
Billy
а как сюда файл заслать ? Это можно ?
Anatoly
Anatoly
На скрепку кликни
Billy
то есть можно
Billy
я всмысле про разрешение спрашиваю. ))
Billy
а не. мне еще нельзя ) я еще маленький
Dr. Friedrich
Хочешь нам свой бинарник с вирусами показать?
Billy
та не. я ж вчера задачку обещал
Dr. Friedrich
Я дал пермишен на файлы, засылай.
Billy
Задачка
Billy
Там есть баги. Файл не компилится: сразу говорю. Это не важно для задачи. Решается в уме. Там 2 типа багов. одни по языку, другие по дизайну. и те и те найти можно с листочком бумаги.
Billy
Код настоящий, работал, пока я не стал его трогать палкой)))
Billy
если какие-то вопросы, то отвечу
Alexander
Есть
Там вопрос выше.
Billy
Там вопрос выше.
Ща будет как у беркуса ответ. :)
Alexander
Понял. ))
Anatoly
я не нашел способа определить friend функцию вне определения внутреннего класса шаблона класса. это вообще возможно?
Anatoly
Я не нашел способа определение friend функции вне определения вложенного класса B: /// предварительное объявление шаблона класса A template<class T> struct A; /// определение шаблона класса А template<class T> struct A { /// предварительное объявление внутреннего класса В struct B; }; /// определение внутреннего класса B template<class T> struct A<T>::B { /// определение шаблона функции foo другом friend void foo(B& a) { a.x = 100; } /// определение шаблона оператора == другом friend bool operator==(const B&a, const B&b) { return a.x == b.x; } private: int x = 10; };
Anatoly
это не я, но автор хочет определение /// определение шаблона функции foo другом friend void foo(B& a) { a.x = 100; } вынести за пределы определения B
Anatoly
был вариант template<class T> struct A<T>::B { template<class U> friend void foo(typename A<U>::B&); ... }; template<class U> friend void foo(typename A<U>::B&) {...} ... A<int>::B a; foo(a); но здесь по понятным причинам не работает дедукция и обязательно надо сказать foo<int>(a);
Anton
Привет, кто нибудь сталкивался с тем что clang копилятор генерирует код отличный от того что ты написал? Есть тривиальный метод, в котором вектор заполняется элементами и затем возвращается. Clang с отключенной оптимизацией кода запихивает вектор в тело цикла (судя по assemby), соответственно вектор постоянно разуплотняется после итерации, а с O1 например все работает как и должно.
Levon
Недавно на хабре была статья, что этот Clang вызывает функцию с инициализацией статик функции, хотя ту функцию никто не вызывает. Типа находит где эта статик функция может инициализироваться, и инициализирует сам, чтобы не была вызвана NULL функция
Levon
Щам найду статью
Anatoly
Там есть баги. Файл не компилится: сразу говорю. Это не важно для задачи. Решается в уме. Там 2 типа багов. одни по языку, другие по дизайну. и те и те найти можно с листочком бумаги.
ну при бегком просмотре бросается запуск треда до инициализации всех членов класса SMTTest() : _server_thread(&SMTTest::server_work, this), /// <<<<<<<<<<<<<<<<<<<< _worker_ready(false), _sckt(0) {} protected: virtual void SetUp() {} virtual void TearDown() { ::close(_sckt); } protected: std::thread _server_thread; std::mutex _mutex; std::condition_variable _cv; bool _worker_ready;
Levon
https://m.habrahabr.ru/company/infopulse/blog/338812/ вот статья если кому интересно
Levon
И дала вызывать функцию которая не вызывается? :D
Anton
Это-то понятно, что есть UB, разные сложные кейсы при компиляции. Но код тривиальный, 5 строк, обьявление, цикл, добавление, возврат, а с -O0 не пашет.
Levon
Что значит «имеет право» в данном контексте? Типа все что посчитает нужным сделать сделает?
Anatoly
задавай вопросы в @supapro.cxx, получай знания абсолютно бесплатно.
Levon
Ок, понятно
Anton
std::vector<Employee> parseResponse(const xmlNodePtr root) { std::vector<Employee> result; for (xmlNodePtr node = root->children; node != nullptr; node = node->next) { if (xmlNodeHasName(node, "AdEmployee")) { result.push_back(parseEmployee(node)); } } return result; }
Anton
Примерно так, с O0 в assembly видно что массив инициализируется на каждой итерации цикла, с O1 только 1 раз до цикла... clag, llvm.
Anton
пардон, вектор
Anton
Окей, да в том то и беда что сразу пошел написал тест тривиальный и все работает как и ожидалось. А в целевом проекте беда.
Berkus
+
Anton
Самое смешное, что если например после объявления вектора сделать какой-то сайд эффект, например std::cout « "Hello"; то в assembly все генерится как и ожидалось, даже с O0
Anton
Нет это plain struct с примитивными типами внутри, интами и булом
Berkus
так, там clang какой версии?
Anton
Apple LLVM version 9.0.0 (clang-900.0.37)
Berkus
https://godbolt.org/g/NwE8Ux тут генерится нормально
Berkus
допинай пожалуйста этот пример до ошибки