@ProCxx

Страница 1084 из 2477
Anatoly
13.07.2017
09:05:10
напишешь std::function<int(CStringA)>

получишь по рукам

так что это над тобой CStringA поиздевался

Constantine
13.07.2017
09:06:05
а по-моему std::function<void()> это должно быть хотя быть что-то, что могло быть скомпилировано, возвращая void

Google
Scarf
13.07.2017
09:06:12
Т.е. у тебя выходит CStringA operator() { return savedlambda(); };

Constantine
13.07.2017
09:06:50
std::function<void()> lambda1 = [&] () { //OK return lambda1; }; std::function<void()> lambda2 = [&] () -> void { //CE return lambda2; };

Scarf
13.07.2017
09:08:28
Ну и? Здесь тоже все норм. В первом случае при возвращении значение кастится в void, во втором случае ты пытаешься вернуть значение из функции с void.

Constantine
13.07.2017
09:08:58
Ну то есть вы не считаете, что такое поведение является by design ошибкой для std::function? :)

Berkus
13.07.2017
09:09:19
чот я не понял с какого хуя вам там преобразование то вдруг впилось? тернарка возвращает ОДИН тип и это CStringA

Anatoly
13.07.2017
09:09:45
тернарка возвращает const char*

во всяком случае в таком виде return s == "" ? "" : s;

Constantine
13.07.2017
09:10:22
чот я не понял с какого хуя вам там преобразование то вдруг впилось? тернарка возвращает ОДИН тип и это CStringA
тернарка задедуктилась по типу первого аргумента, а второй преобразовала

Constantine
13.07.2017
09:11:12
std::function<CStringA(CStringA)> echo = [](CStringA s) -> CStringA { //было бы верно return s == "" ? "" : s; }

Anatoly
13.07.2017
09:12:43
тебя подвел их конструктор CStringT(_In_opt_z_ const XCHAR* pszSrc) :

Constantine
13.07.2017
09:13:29
ну смотрите, я жду от std::function поведения, которое соответствует поведению указателей на функции

по сути std::function построила новую функцию, добавив мне оператор преобразования в конец

Google
Anatoly
13.07.2017
09:15:20
просто вывод типа в условиях неопределенности сопровождается сюрпризами из-за вольностей позволяемых тем же CStringA

c std::string у тебя такого не будет

Constantine
13.07.2017
09:16:39
все в порядке, пока речь не идет о выражениях, допускающих преобразование типа и при этом выходящих за scope

как ни странно, но до этого момента этими вольностями CStringA расстрелов ноги не было

там очень сложно ее построить auto p = (s == "" ? "" : s); //вывело LPCTSTR из s, которая все еще верна в scope

Constantine
13.07.2017
09:21:57
Ну вообще да, atl не нужен. Но и std::function ведёт себя по-свински
Даже не используя слово из 6 букв, достаточно сложно придумать альтернативу под вин :)

Anatoly
13.07.2017
09:22:01
наоборот, он сделал все что мог

Constantine
13.07.2017
09:22:42
короче я это все запретил и у меня никаких проблем :)

Anatoly
13.07.2017
09:22:45
ладно, пусть функция возвращает CStringA, ты мне вернул const char*, ладно, ведь CStringA может же из него сконструировать

Vladislav
13.07.2017
09:22:57
наоборот, он сделал все что мог
Добавил пару имплисит кастов там, где его не просили?

Constantine
13.07.2017
09:23:06
я в принципе не понимаю, зачем std::function допускает преобразование возвращаемых типов

Alex Фэils?︙
13.07.2017
09:23:39
Затем

Anatoly
13.07.2017
09:23:46
Добавил пару имплисит кастов там, где его не просили?
гы-гы, если бы он этого не сделал была бы армия возмуженных

думаю, в комитете были дебаты на этот счет

Alex Фэils?︙
13.07.2017
09:24:07
Затем
Я заебался вчера об этом говорить, зачем. Даже Андрея потревожил

Constantine
13.07.2017
09:24:12
всей армии возмуженных можно было сделать std::allow_implicit_cast

Anatoly
13.07.2017
09:24:22
сделать тупую куклу или сделать интеллектуальный аппарат std::function

Vladislav
13.07.2017
09:24:46
гы-гы, если бы он этого не сделал была бы армия возмуженных
Если слушать армию возмущенных, эдак в пхп скатить язык можно

Google
Anatoly
13.07.2017
09:25:07
ну, так или иначе, интеллект перевесил

ага, и лаконичности конец

в конечном итоге, за это идет сейчас борьба

Constantine
13.07.2017
09:26:07
> интеллектуальный аппарат что-то я не помню, какие там маркировки у std::shared_ptr<T>::shared_ptr(T*)

это создает 0 лаконичности

Anatoly
13.07.2017
09:26:44
make_shared

Constantine
13.07.2017
09:26:45
если принимается void() и туда передается int() кажется здесь какой-то костыль

Vladislav
13.07.2017
09:26:52
ага, и лаконичности конец
Из-за такой же любви к лаконичности можно 0 скастить к любому указателю, разве это хорошо?

Alex Фэils?︙
13.07.2017
09:26:53
В общем, можно пропознуть explicit templatea

Vladislav
13.07.2017
09:28:05
Это же цэ(
Ну вот решение о касте возврата в std::function - оно в стиле цэ

Жертвуем строгостью в пользу сомнительного упрощения частного случая (не факт что часто нужного)

Berkus
13.07.2017
09:28:50
тернарка возвращает const char*
окей, но ретурн валью это CStringA так что оно кастится обратно

Anatoly
13.07.2017
09:29:25
ретурн валуе у std::function но не лябмды

Constantine
13.07.2017
09:29:38
окей, но ретурн валью это CStringA так что оно кастится обратно
только второй каст происходит вне scope функции и s уже померло

Anatoly
13.07.2017
09:29:41
поэтому const char* уже указывает на мусор

Anatoly
13.07.2017
09:29:59
короче CStringA зло

Berkus
13.07.2017
09:30:11
короче CStringA зло
как и примерно весь MFC и ATL

Constantine
13.07.2017
09:30:19
ага

Google
Berkus
13.07.2017
09:30:26
но этот пример не характерен для ATL

любая либа с такими преобразованиями будет подвержена

зло тут implicit casts :)

Vladislav
13.07.2017
09:31:13
Anatoly
13.07.2017
09:31:20
ну, это и имелось ввиду

Alex Фэils?︙
13.07.2017
09:31:31
Видимо, по этой причине стд стринг не кастуется неявно к const char*

Admin
ERROR: S client not available

Anatoly
13.07.2017
09:31:37
сделай они CStringA(const char*) explicit все бы было хорошо

Berkus
13.07.2017
09:32:26
ага, спасибо, это было интересно

Alex Фэils?︙
13.07.2017
09:32:40
как и примерно весь MFC и ATL
Не, ну AtlDialogBox - или как его там - очень удобная пижня для актив иксов: вжух, и все хорошо работает

Berkus
13.07.2017
09:33:05
"хорошо" и "ATL в одном предложении, ай яй яй

Alex Фэils?︙
13.07.2017
09:33:50
Ну, про другие части атл я не говорил ¯\_(ツ)_/¯

Anatoly
13.07.2017
09:36:40
так что, расходимся, драки не будет?

Evgeniy
13.07.2017
09:43:34


Alex Фэils?︙
13.07.2017
09:44:28
Это похоже на то, как я одну функциональность в одном проекте во внешний плагин выносил

В итоге знатно отрефакторил код

Мой любимый рефакторинг: 6000 deletions, 0 additions

Alexander
13.07.2017
09:45:28
?

Офигенно поработал:)

Alex Фэils?︙
13.07.2017
09:45:48
Эт да)))

Google
Anatoly
13.07.2017
09:45:56
:)))

Anatoly
13.07.2017
09:49:01
@antoshkka а это валидное объявление другом friend class ReflectionTypeImpl; при условии, что ReflectionTypeImpl template?

Antony
13.07.2017
09:51:14
Alex Фэils?︙
13.07.2017
09:51:38
Там вроде typename надо еще вкрутить

Anatoly
13.07.2017
09:51:52
то есть template<typename T> friend class ReflectionTypeImpl

спасибо!

Alex Фэils?︙
13.07.2017
10:06:34
24-26 августа в Томске на территории Томского государственного университета пройдёт конференция C++ Siberia 2017. Нулевой день конференции (24 августа) отведен для мастер-классов. В первый день (25 августа) состоится регистрация участников и открытие конференции. http://siberia-2017.cppconf.ru/ #cppsiberia #cpp #tomsk

Vadym
13.07.2017
10:49:51
Добрый день. Помогите разобраться, пожалуйста, с организацией файлов проекта. Создал file.cpp, создал file.h. тут всё ок, компилятор сразу привязывать описание из header в cpp. В этом же проекте создаю file2.cpp и file2.h И всё, что описываю в этом новом header я почему-то не могу связать с новым .срр. Я вручную пробовал, всё равно не получается. Будто бы file2.cpp полностью игнорирует и не видит #include "file2.h" . Поискал решение в интернете, скорее всего это связано с файлами проекта, надо полазить в настройках проекта и в Additional Include Directories вручную указать путь. Я начал лазить, но не смог настроить. И не уверен на 100%, что это именно решение проблемы. Если кто сталкивался с таким - отпишите, спасибо.

Vadym
13.07.2017
11:02:26
О, спасибо

Michael
13.07.2017
12:37:55
Может кто юзал pootle или weblate? Что удобнее и лучше?

Alexander
13.07.2017
12:47:52
Может кто юзал pootle или weblate? Что удобнее и лучше?
я использовал только как юезр - либру иногда перевожу. Сделано всё довольно удобно. Weblate не юзал, ничего не могу сказать

Дед Пегас
13.07.2017
14:05:39
Не сколь про плюсы, но про ARM http://lemire.me/blog/2017/07/10/pruning-spaces-faster-on-arm-processors-with-vector-table-lookups/

Alexander
13.07.2017
14:07:02
на хабре вроде как перевод был

Страница 1084 из 2477