Я немного смущен тем, что происходит, когда я копирую функторы и/или инициализаторы. В следующем коде я думал, что я буду копировать/перемещать объекты все время, но без него Segfaults. Кажется, я что-то делаю неправильно, но пока не понял, каковы мои неправильные предположения. Странно на cppreference.com Мне не удалось найти копию или перемещение конструктора для initializer_list
, поэтому мне интересно, что на самом деле происходит в этих случаях.Копия функтора и initializer_list
#include <string>
#include <vector>
#include <functional>
#include <iostream>
std::initializer_list<std::function<std::string()>> getInitializer() {
return {
[]() -> std::string {
return "If";
}
};
}
int main() {
std::function<int(std::string)> func;
{
auto init = getInitializer();
func = [init](std::string text) -> int {
std::vector<std::function<std::string()>> vec(init);
for(auto& el : vec) {
std::cout << el();
}
std::cout << text << std::endl;
return 5;
};
}
return func(" you see this - the world is all right!");
}
Почему бы не добавить 'using' заявление на вершине? –
@ColeJohnson 'использование' для чего? – abergmeier
@LCIDFire 'using namespace std;' поэтому вам не нужно набирать 'std ::' все время. http://msdn.microsoft.com/en-us/library/aewtdfs3(v=vs.100).aspx –