Constantine
да это не важно
Constantine
все что ты написал - общее
Constantine
все что ты притащил - твой гемор
Constantine
не тащи библиотеки за одну функцию, короче
Berkus
генеральный спонсор - велосипедостроительный завод
Berkus
http://mainisusuallyafunction.blogspot.com/2017/06/a-rust-view-on-effective-modern-c.html
Arseny
Кто-нибудь может пояснить почему все так? vector<string>({"A", "B"}); // OK vector<string>("A", "B"); // CE make_unique<vector<string>>("A", "B"); // CE make_unique<vector<string>>({"A", "B"}); // CE auto tmp = {"A", "B"}; make_unique<vector<string>>(tmp); // OK (только под msvc17)
Constantine
> make_unique<vector<string»("A", "B"); // OK
Constantine
????
Constantine
std::make_unique<std::vector<std::string>>("A", "B"); //CE: MSC 14 Update 3
Arseny
Вот и я удивился. Это у меня YCM врет.
Constantine
std::make_unique<std::vector<std::string>>({ "A", "B" }); //CE: MSC 14 Update 3 (????)
Arseny
Ладно, тогда вопрос пока снят.
Constantine
интересно почему он не смог сфорвардить инит лист
Arseny
Но на самом деле основная грусть в том, что в make_unique нельзя передавать то же, что в обычный конструктор
Arseny
И я плохо понимаю почему.
Constantine
error C2664: 'std::vector<std::string,std::allocator<_Ty»::vector(const std::vector<_Ty,std::allocator<_Ty» &)': cannot convert argument 1 from 'std::initializer_list<const char *>' to 'const std::allocator<_Ty> &'
Constantine
забавная ошибка
Constantine
auto type = { "A", "B" }; std::make_unique<std::vector<std::string>>(type); //меняется тип переданной переменной
Constantine
так что это, вроде, понятно
Constantine
вместо && получается &
Arseny
О, забавно. А под clang и gcc с auto все равно не компилируется.
Constantine
ну MSC 14 U3 не компилит никакую версию с std::make_unique
Constantine
возможно, прикол в том, что perfect forwarding не настолько perfect, когда речь о разрешении перегрузки функции?
Arseny
https://godbolt.org/g/vihPfL
Constantine
vector(_XSTD initializer_list<value_type> _Ilist, const _Alloc& _Al = allocator_type())
Constantine
в MSC объявлен так
Constantine
так что std::initializer_list<const char*> ему не подходит
Arseny
Но в случае vector<string>({"A", "B"}); семантика какая-то иная?
Constantine
std::initializer_list<std::string> list = { "A", "B" }; std::make_unique<std::vector<std::string>>(std::move(list)); //OK
Constantine
Arseny
Интересно баг это стандарта или фича. В смысле планируется ли исправлять. Еще и move-ать initializer list нельзя, как я помню.
Constantine
вероятно прикол в том, что нельзя мувать и создавать из ссылок
Constantine
хотя это парадокс
Constantine
std::initializer_list<std::string> list = { "A", "B" };
Constantine
это же скомпилировалось
Arseny
Так и vector<string> v = {"A", "B"}; компилируется
Berkus
В жаве утечек нет, как и в C++. А вот в пользовательском коде на этих языках утечки есть.
йюп, чистил табы вот нашел как раз http://blog.nimbledroid.com/2016/05/23/memory-leaks.html
Arseny
йюп, чистил табы вот нашел как раз http://blog.nimbledroid.com/2016/05/23/memory-leaks.html
Еще по теме https://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java
Александр
к спору выше: все же помнят, что string умеет конструироваться из (const char* it_begin, const char* it_end), причем для литералов будет нерабочий код?
Constantine
🦥Alex Fails
Moved to #holywar s
pinnokio
Алекс, что за фигня: вбросы про джаву и "си++ несовсместим с перформансом" - это ок, а разговор про смарты - холивар? dafuq?
Vladislav
Multiple inheritance in C++
Constantine
Multiple inheritance in C++
Так нет же разницы между в С++ и яве
Vladislav
Так нет же разницы между в С++ и яве
откуда в жаве множественное наследование?
Constantine
откуда в жаве множественное наследование?
ну они там говорят про то, что интерфейс не наследуется, а реализуется, но ничо не меняется же
Alexandr
Не факт. В даже фактически унаследоваться можно не более, чем от одного класса, но реализовать сколь угодно много интерфейсов
Constantine
А какая разница снизу? Будет тот же самый QueryInterface код, только в С++ это будет QuerySomeBase
Vladislav
ну они там говорят про то, что интерфейс не наследуется, а реализуется, но ничо не меняется же
Разница в том, что интерфейсы не имеют state'а, а значит не возникает проблем из-за наследования одного и того же базового класса несколько раз
Anonymous
Список книг, видео и курсов по машинному обучению и математике, всё на русском языке. Большая, качественная подборка. Почти все pdf'ки книг гуглятся. https://ru.stackoverflow.com/a/683632/1084
Anonymous
Вообще то в топе там самый свежак
Anonymous
Но есть и классика да, она может быть старая, но никогда не теряет акутальности, её просто надо знать
Evgenii
Русскоязычные источники обычно уже устаревшие (кроме самой базы)
в дип лерненге статья может устареть к моменту когда ее опубликуют, потому что препринт доступен почти год и уже три раза улучшили результаты)
Алдар
бред изучать мл на русском
Roman
макрос: #define $Test(casename) void casename (testing::TestCase* test) используется так: $Test(verifyCase) { //... } $Add(verifyCase) хотелось бы исбавиться от $Add и при вызове макроса $Test зарегистрировать созданную функцию в глобальном объекте типа: ... testing::Test::getInstance().define( casename ) ... но к сожалению ДО определения функции этого сделать не получается по очевидной причине, взять function body в качестве параметра макроса не могу, ибо тогда весь body inline'ится в одну строку и __LINE__ внутри блока отображает конечную строку макроса а не свою индивидуальную, конкретную строку есть какой нибудь Workaround?
vladislav
бред изучать мл на русском
основы, почему нет?
Roman
есть, взять нормальный тестинг фреймворк в котором это уже сделано все, например gunit
на то что я сейчас делаю есть причина, а именно асинхронность кода, асинхронный код в существующих фреймах неудобно тестить
Berkus
мне норм
Roman
мне норм
в смысле?
vladislav
язык пушкина, есенина и маяковского
Roman
язык пушкина, есенина и маяковского
... который непригоден в сфере программирования :)
vladislav
зря вы так
Алдар
зачем учить на русском, если можно на английском и все термины сразу понимать
Berkus
в смысле?
в смысле тестирую асинхронный код в Catch и boost.test и все норм
Vladislav
язык пушкина, есенина и маяковского
У кого из них клёвые статьи по машинлернингу стоит почитать?
vladislav
давай зачётку
Vladislav
Английский сейчас - как латынь раньше, изучать что-то на других языках (научно/техническое) - контрпродуктивно
vladislav
Да это ясно, я ж шучу