
Berkus
13.07.2017
07:45:46

Vladislav
13.07.2017
07:47:35

Дед Пегас
13.07.2017
08:15:58
Мы тут пилим подкаст по плюсам и нам нужна небольшая помощь с выбором ведущего (ведущих): https://goo.gl/forms/RfS9Sk4Z56ldoThJ2

Google

zk
13.07.2017
08:19:10
CppCast'a не хватает?

Дед Пегас
13.07.2017
08:19:14
Да!

Alexander
13.07.2017
08:21:21
на самом деле мне хватает, просто получается такая штука, что:
1) Не все могут в английский
2) Наличие хороших альтернатив - не значит плохо (а вот вопрос про хорошесть крайне уместен, но это мы посмотрим ещё).

zk
13.07.2017
08:26:21
но вообще, да, подкаст это круто

Alexander
13.07.2017
08:37:44

Constantine
13.07.2017
08:40:39
Что-то я все еще очень расстроен этим примером
std::function<void()> lambda = [&] () {
return lambda;
};

Pepe
13.07.2017
08:41:54
Победил проблему в симейке. Как то установил переменную и перебилдил.

Nik
13.07.2017
08:42:09

Vladislav
13.07.2017
08:42:51

Scarf
13.07.2017
08:43:28

Berkus
13.07.2017
08:44:21
а варнингами про неинициализированную lambda оно тебя не закидывает?

Scarf
13.07.2017
08:45:12

Google

Vladislav
13.07.2017
08:45:13
Как?
Один тип функций молча кастится к другому

Berkus
13.07.2017
08:45:23
а, там капчур, ок

Владислав
13.07.2017
08:45:45
а кто учавствует в первом подкасте?
о чём будете говорить?

Constantine
13.07.2017
08:46:59
Проблема конечно что это мне вчера взорвало ногу примерно вот так
std::function<CStringA()> echo = [](CStringA s){
return s == "" ? "" : s;
}

Alex Фэils?︙
13.07.2017
08:47:41

Scarf
13.07.2017
08:47:50
Ну да, ты не сказал, что у тебя функция должна что-то принимать

Like
13.07.2017
08:47:55

Vladislav
13.07.2017
08:48:09

Scarf
13.07.2017
08:48:14
std::function же темплейт

Vladislav
13.07.2017
08:48:41

Constantine
13.07.2017
08:49:02
Это что за тернарка такая
Это упрощенный пример. Тернарка возвращает const char * , std::function конвертирует назад в CStringA, до свидания

Like
13.07.2017
08:49:14
Я про само условие

Scarf
13.07.2017
08:49:15

Дед Пегас
13.07.2017
08:49:20

Evgeniy
13.07.2017
08:49:28

Vladislav
13.07.2017
08:49:46
Но все же

Berkus
13.07.2017
08:49:55
prog.cc: In function 'int main()':
prog.cc:9:1: error: conversion from 'main()::<lambda(std::__cxx11::string)>' to non-scalar type 'std::function<std::__cxx11::basic_string<char?)>' requested
};
ну так и чо

Constantine
13.07.2017
08:49:56

Google

Berkus
13.07.2017
08:50:00
где тут выстрел в ногу

Scarf
13.07.2017
08:50:20

Like
13.07.2017
08:50:27

Constantine
13.07.2017
08:50:37

Berkus
13.07.2017
08:50:53
prog.cc: In function 'int main()':
prog.cc:9:1: error: conversion from 'main()::<lambda(std::__cxx11::string)>' to non-scalar type 'std::function<std::__cxx11::basic_string<char?)>' requested
не компилится, покажите работающий пример

Scarf
13.07.2017
08:51:30

Constantine
13.07.2017
08:51:35

Scarf
13.07.2017
08:51:59
Там возможен неявный каст в const char*

Berkus
13.07.2017
08:52:03
ну приведи тогда класс CStringA, я его за тебя выдумывать буду?

Constantine
13.07.2017
08:52:25

Scarf
13.07.2017
08:52:32
Это из майкрософтовской библиотеки шаблонов ATL

Berkus
13.07.2017
08:52:33
ссылку
я не пользуюсь ATL и прочими говноподелиями мс
Closed: cannot reproduce

Scarf
13.07.2017
08:53:23
https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/sdk/lib/atl/cstringt.h;hb=222cce68149ded6fe2abc5b6295ce982c7e68222#l288
Из ReactOS

Anatoly
13.07.2017
08:54:08

Berkus
13.07.2017
08:54:08
что из этого важно?

Google

Berkus
13.07.2017
08:54:16
Там возможен неявный каст в const char*

Constantine
13.07.2017
08:54:24
именно

Berkus
13.07.2017
08:54:26
и?

Anatoly
13.07.2017
08:54:28
Severity Code Description Project File Line Suppression State
Error C2440 'initializing': cannot convert from 'CMFCApplication5App::{ctor}::<lambda_152cda3ab2ae79cb0a18d1c14222c378>' to 'std::function<CStringA (void)>' MFCApplication5 c:\users\stranger\documents\visual studio 2015\projects\mfcapplication5\mfcapplication5\mfcapplication5.cpp 30

Vladislav
13.07.2017
08:54:34

Admin
ERROR: S client not available

Anatoly
13.07.2017
08:54:39
разные сигнатуры

Berkus
13.07.2017
08:54:40
оно ругается на разные сигнатуры да, причем тут неявное приведение?

Constantine
13.07.2017
08:55:02
ой сорри

Scarf
13.07.2017
08:55:12
Суть в том, что
а) неявные касты - плохо
б) надо обьявлять все нормально
/тхреад

Constantine
13.07.2017
08:55:17
std::function<CStringA(CStringA)> echo = [](CStringA s){
return s == "" ? "" : s;
}
параметр не указал

Scarf
13.07.2017
08:55:48

Constantine
13.07.2017
08:55:53

Scarf
13.07.2017
08:56:22
Указывай все типы явно и не стреляй себе в ногу

Constantine
13.07.2017
08:56:46
Я выбросил std::function и больше не стреляю себе в ногу, да

Scarf
13.07.2017
08:57:23
https://www.youtube.com/watch?v=HvEhOKkfoSo

Constantine
13.07.2017
08:58:04
Возможность преобразования возвращаемого типа - явная ошибка std::function

Google

Anatoly
13.07.2017
08:59:00
ну
std::function<CStringA(CStringA)> a = [](CStringA s) {
return "" + s;
};
auto s = a("34");
возвращает CStringA

Constantine
13.07.2017
08:59:52
в тернарке s != "" ? s : "" вернет CStringA

Scarf
13.07.2017
09:00:26

Constantine
13.07.2017
09:00:45

Vladislav
13.07.2017
09:00:53

Scarf
13.07.2017
09:01:04

Anatoly
13.07.2017
09:02:40
return s == "" ? CStringA("") : s;

Constantine
13.07.2017
09:02:41

Anatoly
13.07.2017
09:03:14
но в данном случае нет

Constantine
13.07.2017
09:03:25
в данном случае это ошибка std::function

Scarf
13.07.2017
09:04:25