Почему когда я пишу такой код возникает ошибка
bool f(char* buf, char* key_input) {
boost::beast::string_view key = std::string(key_input);
//todo
ws.set_option(websocket::stream_base::decorator([](websocket::request_type& req) {
req.set("Api-Key", key);
})
);
//todo
C:\Project2.cpp(40,1): error C3493: 'key' cannot be implicitly captured because no default capture mode has been specified
C:\Project2.cpp(39,56): error C2440: '': cannot convert from 'int' to 'boost::beast::websocket::stream_base::decorator'
C:\Project2.cpp(41,14): message : No constructor could take the source type, or constructor overload resolution was ambiguous
Done building project "Project2.vcxproj" -- FAILED.
Но если я пишу так то все ок
ws.set_option(websocket::stream_base::decorator([](websocket::request_type& req) {
req.set("Api-Key", "28369a57-7476-4d2c-9b9d-574d4282b428");
})
);
Если верить определению функции set
template<class Allocator>
void
basic_fields<Allocator>::
set(field name, string_view const& value)
или
template<class Allocator>
void
basic_fields<Allocator>::
set(string_view sname, string_view const& value)
Собственно почему это происходит и как исправить?