Может кто-нибудь объяснить мне, почему следующее не работает (test
is const
внутри blub
). Поскольку test
копируется значением, которое я предполагал, я мог бы установить его, так как он является функторным.Нет присвоения копии по значению в лямбда
#include <memory>
int main()
{
std::shared_ptr<bool> test;
auto blub = [test]() {
test = std::make_shared<bool>(false);
};
return 0;
}
Чтобы сделать эту работу, сначала я должен ввести новый shared_ptr
, назначать test
, а затем я могу нормально назначить другую shared_ptr
. BTW: Я использую clang 3.1
Итак, 'const' вы имеете в виду всех захваченных значений сопзЬ - или только копию по значению? – abergmeier
Так же, как с помощью написанного вручную объекта функции, только те, которые были захвачены по значению. Захваты являются членами лямбда, и оператор объявляется как «Оператор результата()() const; –