
Sergey
20.04.2018
08:19:23
?

Александр
20.04.2018
08:19:53
а что за книжечка на столе лежит?

Antony
20.04.2018
08:21:41
По бусту

Sergey
20.04.2018
08:22:27
я так понимаю эта https://www.packtpub.com/application-development/boost-c-application-development-cookbook-second-edition

Google

Antony
20.04.2018
08:23:24

?
20.04.2018
08:23:32
Это офис Яндекса?

Александр
20.04.2018
08:23:33
спасибо

Sergey
20.04.2018
08:23:39
?

?
20.04.2018
08:28:27

Аттрибутивно-ассоциативный ряд
20.04.2018
08:30:10
сам ищу как бы эту лабуду в std::function сконвертить

Sergey
20.04.2018
08:38:45

Aidar
20.04.2018
08:41:49
Потомучто интерфейс предполагает копирование

Oleg
20.04.2018
08:42:15
но у него функция (F&& f)

Aidar
20.04.2018
08:43:09
Любой тип мувабл

Google

Аттрибутивно-ассоциативный ряд
20.04.2018
08:43:26

Aidar
20.04.2018
08:44:09
Чо значит не приводится?
Он колабл

Nikita
20.04.2018
08:44:16

Aidar
20.04.2018
08:44:35
Просто он ещё может быть и не копируемым
А фанкшну нужен копируемый

Аттрибутивно-ассоциативный ряд
20.04.2018
08:44:52
http://en.cppreference.com/w/cpp/utility/functional/bind
Return value
A function object of unspecified type T, for which std::is_bind_expression<T>::value == true.

Евгений
20.04.2018
08:45:10
но у него функция (F&& f)
норм работает
void push(F&& function) {
unique_lock<mutex> lock{mutex_m};
deque_m.emplace_back(forward<F>(function));
condition_m.notify_one();
}

Аттрибутивно-ассоциативный ряд
20.04.2018
08:45:51
напиши мне код, который результат std::bind впихивает в foo(std::function<void(int)>)

Nikita
20.04.2018
08:46:42

Аттрибутивно-ассоциативный ряд
20.04.2018
08:46:50
да

Nikita
20.04.2018
08:47:03
да
и этот функтор будет копируемый?

Аттрибутивно-ассоциативный ряд
20.04.2018
08:47:08
он вызываемый, но не конвертируемый в std::function<void(int)>
The return type of std::bind is CopyConstructible if all of its member objects (specified above) are CopyConstructible, and is MoveConstructible otherwise.

Aidar
20.04.2018
08:47:34
Ну ответь

Аттрибутивно-ассоциативный ряд
20.04.2018
08:47:48
так что для интов будет копируемый и мувабл

Aidar
20.04.2018
08:48:11
С чего ты взял что копируемость зависит от того что там инт

Antony
20.04.2018
08:48:27

Google

Sergey
20.04.2018
08:48:31
void f(int n1, int n2, int n3, const int& n4, int n5)
{
std::cout << n1 << ' ' << n2 << ' ' << n3 << ' ' << n4 << ' ' << n5 << '\n';
}
template<class T>
void test(T test) {
test(2, 1);
}
int main()
{
using namespace std::placeholders;
// demonstrates argument reordering and pass-by-reference
int n = 7;
std::function<void(int, int)> f1 = std::bind(f, _2, _1, 42, std::cref(n), n);
test(f1);
return 0;
}

Аттрибутивно-ассоциативный ряд
20.04.2018
08:49:01
а теперь без шаблона

Sergey
20.04.2018
08:49:10
,kz///
void f(int n1, int n2, int n3, const int& n4, int n5)
{
std::cout << n1 << ' ' << n2 << ' ' << n3 << ' ' << n4 << ' ' << n5 << '\n';
}
void test(std::function<void(int, int)> test) {
test(2, 1);
}
int main()
{
using namespace std::placeholders;
// demonstrates argument reordering and pass-by-reference
int n = 7;
std::function<void(int, int)> f1 = std::bind(f, _2, _1, 42, std::cref(n), n);
test(f1);
return 0;
}

Аттрибутивно-ассоциативный ряд
20.04.2018
08:49:53
хм, как оно в function залезло. у меня clang аж извелся в попытках сконвертировать
ща потестю

Aidar
20.04.2018
08:50:31
void f(int n1, int n2, int n3, const int& n4, int n5)
{
std::cout << n1 << ' ' << n2 << ' ' << n3 << ' ' << n4 << ' ' << n5 << '\n';
}
void test(std::function<void(int, int)> test) {
test(2, 1);
}
int main()
{
using namespace std::placeholders;
// demonstrates argument reordering and pass-by-reference
int n = 7;
std::function<void(int, int)> f1 = std::bind(f, _2, _1, 42, std::cref(n), n);
test(f1);
return 0;
}
Ты хранишь ссылку
Std bind сохранит ссылку
А не враппер
Оно некопируемо

Sergey
20.04.2018
08:53:06
void test(std::function<void(int, int)> test) {
test(2, 1);
std::function<void(int, int)> t2 = test;
t2(3, 4);
}
не могу понять что именно у тебя "не копируемо"?

Aidar
20.04.2018
08:53:33
Оно не хранит reference wrapper
Оно сохранит именно ссылку

Sergey
20.04.2018
08:54:14
ладно, напиши пример который НЕ будет работать
не могу вдуплить зачем тебе reference wrapper

Aidar
20.04.2018
08:55:06
Почему у меня
cref я писал чтоль
Или может это мой код?

Google

Sergey
20.04.2018
08:57:45
ну этот враппер только тебе упёрся, зачем то))

Аттрибутивно-ассоциативный ряд
20.04.2018
08:58:00

Sergey
20.04.2018
09:01:13
Кто нибудь может поделится что за сумасшествие вы пытаетесь сотворить с этим несчастным bind и function?))

Andrew
20.04.2018
09:03:52

Аттрибутивно-ассоциативный ряд
20.04.2018
09:14:28
https://wandbox.org/permlink/11fEI5yUXD68edbe
вот чо он ругается
соррян, туплю Ж(

Ilya
20.04.2018
09:16:59
лол вы знали что в телеге есть игры https://t.me/CapitalistGameBot?start=410100862

Admin
ERROR: S client not available

Nikolai
20.04.2018
09:18:05

Max
20.04.2018
09:19:51

Аттрибутивно-ассоциативный ряд
20.04.2018
09:20:10
да Ж)

Aidar
20.04.2018
09:26:03
Или я не умею читать

Аттрибутивно-ассоциативный ряд
20.04.2018
09:26:35
ну ref-wrapperкопируемый же?
а внутри ссылка, да

Aidar
20.04.2018
09:27:07
Я так понял что оно раскрывает враппер при создании
И хранит прям ссылку

Евгений
20.04.2018
09:29:25
Помогите разобраться с std::condition_variable. Кратко: как подождать завершения всех потоков, если они все либо работают, либо ждут?
https://gist.github.com/AshFTW/4e768bde8577fd2a12ae20aa74b72aed

Aidar
20.04.2018
09:31:25

Google

Aidar
20.04.2018
09:41:53
Проблема крч в воркере, точнее в логике проверки пустоты очереди и конца

Kathu
20.04.2018
09:45:51
почитать Вильямса советую, я прям кайфую от его книги

Евгений
20.04.2018
09:49:53

Nikolai
20.04.2018
09:50:13

Kathu
20.04.2018
09:51:34
может я новую редакцию какую-то читаю?
а какие есть книги такие же только по С++14?

PRoSToC0der
20.04.2018
09:52:33
ребят, есть ли какой-нибудь эффект от explicit на конструкторе без параметров?
struct S {
explicit S() = default;
};
void f(S);
int main() {
S s = {}; // error?
f({}); // error?
}
пробовал гуглить, но точного и однозначного ответа не нашёл

Ilia
20.04.2018
10:00:04
А на скейт-бордах слаломных там не ездят?

Kathu
20.04.2018
10:00:46
это их HR?)

Denis
20.04.2018
10:02:52
я был у них на собеседовании

ed
20.04.2018
10:03:12

Роман
20.04.2018
10:13:43
Товарищи, вы как думаете, если есть кусок кода, неоднократно используемый только в одной функции, насколько плохо для стиля кода сделать его локальной лямдой? Типа вот так:
auto fn = [&] (args...) { /*code */}
if (cond) {
fn(cond);
} else {
for (auto &i : vec) {
fn(i);
}
}

Oleg
20.04.2018
10:14:01
збс же

Nik
20.04.2018
10:14:09
а что плохого?

Oleg
20.04.2018
10:14:25
хотя, возможно, тебе стоит поиграться с условиями и сделать код проще

Роман
20.04.2018
10:14:35
Просто товарищи старпёры в таких случаях любят всякие статики

Oleg
20.04.2018
10:16:01
если это твой код, то я бы, наверно, сделал как-то так:
if (cond) vec.clear(); vec.push_back(cond);
for (auto)...

Роман
20.04.2018
10:16:21
В реальном кейсе всё сильно хуже
Мне, собственно, интересна граница, когда такое стоит вытаскивать как отдельную функцию