Dr. Friedrich
Не, ну, как бы, ладно, на здоровье.
Dr. Friedrich
Не нужны — не пользуйтесь.
Dr. Friedrich
Но силлогизма тут никакого нету. Я тоже, помимо прочего, пользуюсь Windows, и мне почему-то пакетные менеджеры нужны.
M
но тот проект про сборки, разве нет?
Dr. Friedrich
я пользуюсь виндоус
Все твои беды — от мяса, чувак. Попомни моё слово.
Dr. Friedrich
но тот проект про сборки, разве нет?
Нууу, не совсем про сборки. Он про полноценную интеграцию в IDE. Чтоб можно было, грубо говоря, сделать из обычного проекта conan-enabled, не вставая с места.
Dr. Friedrich
В Конане есть специальный генератор visual_studio, который генерит props-файлы с либами и инклудами.
Dr. Friedrich
Но его надо ещё в проект засунуть, а + к тому ещё сделать это для разных режимов сборки.
Constantine
Я просто люблю, чтобы я нажимал одну кнопку "установить" и у меня все работало
Constantine
Ну вот это как раз и делаем!
Но мне для этого не нужен пакетный менеджер
Dr. Friedrich
А мне — нужен.
Dr. Friedrich
Ладно, ребят, давайте этот оффтоп про винду и мясоедение немножко свернём.
Constantine
Мне для этого нужен готовый установщик бинаря, который скомпилен со всеми зависимостями)
Dr. Friedrich
M
HÆRESY
переведи, я немного не в курсе
Dr. Friedrich
http://www.dictionary.com/browse/heresy
M
кстати, парня выше потерли зря
Dr. Friedrich
кстати, парня выше потерли зря
Дак я его в супапро форварднул.
M
Дак я его в супапро форварднул.
да надо то было сказать что определение функции вынести повыше
Dr. Friedrich
Ну он всё ещё тут, считай что сказал :)
M
Artem ↑
спасибо, людям надо помогать))
M
а я что-то по старому привык, int или void у main, проблем не было
Dr. Friedrich
Не, в стандарте строго прописан int.
Dr. Friedrich
А некоторые еретические компиляторы разрешают void в качестве расширения.
Dr. Friedrich
Вообще непонятно зачем. Ну вот серьёзно, нафига нарушать стандарты и портабельность даже в таких микромелочах?
M
ну когда в turbo c, прям помню void
Egor
Так он ещё до появления стандартов выпущен.
M
в 17-ом
M
?
Constantine
а что вместо него теперь
в стандарте папу предлагают по имени называть
Constantine
как и всегда
Constantine
и огребать за вынос промежуточного предка
M
можно пример, дабы ощутить весь творящийся беспредел в стандарте
Constantine
struct Base { virtual void f() { std::cout << "Hello, "; } }; struct Derived : Base { void f() override { Base::f(); std::cout << "World!"; } };
Constantine
теперь изменение в ТЗ
Constantine
struct Base { virtual void f() { std::cout << "Hello, "; } }; struct Base2 : Base { void f() override { Base::f(); std::cout << "ISO C++ "; } }; struct Derived : Base2 { void f() override { Base::f(); std::cout << "World!"; } };
Constantine
ой
Constantine
а вот в одном, отдельно взятом компиляторе, все пойдет __super
M
не, телеге не хватает оформления кода
M
у меня глаза выпадают
M
я надеюсь понял, раньше пишешь super и не паришься, а теперь должен отслеживать в дочерних классах от кого отнаследовался
M
но с другой стороны ты можешь в Derived указать что инициализатор или как там его Base2
M
или нет?
Constantine
но с другой стороны ты можешь в Derived указать что инициализатор или как там его Base2
в смысле указать как предка конструировать? там жесткая проверка
Constantine
http://en.cppreference.com/w/cpp/types/aligned_storage а нельзя указать aligned_storage::type классу delete на [Copy|Move][Ctor|Assignment]?
Constantine
а то я тут через его move ctor себе ногу прострелил
Anatoly
а вот в одном, отдельно взятом компиляторе, все пойдет __super
нашел этот пропозал у Страуструпа (его автор Dag M. Brück 1991 год): http://www.stroustrup.com/how-to-write-a-proposal.pdf , искать New keyword for C++: inherited
Anatoly
да, сказали пишите typedef Base super и все будет
Constantine
да, сказали пишите typedef Base super и все будет
ага, жаль, что невозможно сделать static_assert что typedef написан правильно
Anatoly
кстати, typedef не разруливает ситации и с множественным наследованием
Constantine
и проблема "забыл сменить в функции" становится "забыл сменить в private-секции"
Anatoly
а __super разруливает, правда можно использовать только в теле метода: struct B1 { void mf(int) {} }; struct B2 { void mf(short) {} void mf(char) {} }; struct D : B1, B2 { void mf(short) { __super::mf(1); // Calls B1::mf(int) __super::mf('s'); // Calls B2::mf(char) } };
Constantine
а __super разруливает, правда можно использовать только в теле метода: struct B1 { void mf(int) {} }; struct B2 { void mf(short) {} void mf(char) {} }; struct D : B1, B2 { void mf(short) { __super::mf(1); // Calls B1::mf(int) __super::mf('s'); // Calls B2::mf(char) } };
Множественное наследование не нужно, при этом на моей памяти даже несмотря на конвенцию использовать __super в основном коде были расстрелы ноги от проброшенного вызова мимо базового класса (копипаста кода без __super => промежуточный предок => перенос кода => минус нога)
Constantine
конструктор не перевызовется
Anatoly
неужели ничего не поломается? там предок не default constructible
можно попробовать так template<typename T> struct DerivedFrom: T { using super = T; using T::T; }; struct Base { Base(int) {}; }; struct Derived : public DerivedFrom<Base> { Derived() : DerivedFrom<Base>(9) {} };
Constantine
я не убеждал.
ну здесь просто - совершенно очевидно, что __super должно быть, более того, наверное, должно быть __overriden для вызова в точности этой функции
thegr1f
Добрый день. Кто может пояснить эту магию?
thegr1f
int n; n = 0.1 / 0.1; // 1 n = 0.2 / 0.1; // 2 n = 0.3 / 0.1; // 2 n = 0.4 / 0.1; // 4 n = 0.5 / 0.1; // 5 n = 0.6 / 0.1; // 5 n = 0.7 / 0.1; // 6 n = 0.8 / 0.1; // 8 n = 0.9 / 0.1; // 9
Max
народ, а это подходящий чат по вопросам posix/linux/C ?
vladislav
С/posix вполне
vladislav
linux хз
Alexander "SonnySlave"
Линукс в контексте программирования на си/крестах - норм