std::shared_ptr<seasocks::Response> jsonResp(json body, seasocks::ResponseCode status = seasocks::ResponseCode::Ok) {
seasocks::ResponseBuilder respBuilder(status);
respBuilder.withContentType("application/json");
respBuilder << body.dump(); // body.dump() returns a std::string
return respBuilder.build();
}
but I got this compile error.
In file included from opencast.cpp:8:0:
deps/seasocks/src/main/c/seasocks/ResponseBuilder.h: In instantiation of ‘seasocks::ResponseBuilder& seasocks::ResponseBuilder::operator<<(T&&) [with T = std::__cxx11::basic_string<char>]’:
opencast.cpp:205:30: required from here
deps/seasocks/src/main/c/seasocks/ResponseBuilder.h:71:35: error: no matching function for call to ‘forward(std::__cxx11::basic_string<char>&)’
(*_stream) << std::forward(t);
~~~~~~~~~~~~^~~
In file included from /usr/include/c++/6.3.1/bits/nested_exception.h:40:0,
from /usr/include/c++/6.3.1/exception:171,
from /usr/include/c++/6.3.1/ios:39,
from /usr/include/c++/6.3.1/ostream:38,
from /usr/include/c++/6.3.1/iostream:39,
from deps/seasocks/src/main/c/seasocks/Credentials.h:28,
from deps/seasocks/src/main/c/seasocks/Request.h:28,
from deps/seasocks/src/main/c/seasocks/WebSocket.h:28,
from deps/seasocks/src/main/c/seasocks/ServerImpl.h:28,
from deps/seasocks/src/main/c/seasocks/Server.h:28,
from opencast.cpp:3:
/usr/include/c++/6.3.1/bits/move.h:76:5: note: candidate: template<class _Tp> constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&)
forward(typename std::remove_reference<_Tp>::type& __t) noexcept
^~~~~~~
/usr/include/c++/6.3.1/bits/move.h:76:5: note: template argument deduction/substitution failed:
In file included from opencast.cpp:8:0:
deps/seasocks/src/main/c/seasocks/ResponseBuilder.h:71:35: note: couldn't deduce template parameter ‘_Tp’
(*_stream) << std::forward(t);
~~~~~~~~~~~~^~~
In file included from /usr/include/c++/6.3.1/bits/nested_exception.h:40:0,
from /usr/include/c++/6.3.1/exception:171,
from /usr/include/c++/6.3.1/ios:39,
from /usr/include/c++/6.3.1/ostream:38,
from /usr/include/c++/6.3.1/iostream:39,
from deps/seasocks/src/main/c/seasocks/Credentials.h:28,
from deps/seasocks/src/main/c/seasocks/Request.h:28,
from deps/seasocks/src/main/c/seasocks/WebSocket.h:28,
from deps/seasocks/src/main/c/seasocks/ServerImpl.h:28,
from deps/seasocks/src/main/c/seasocks/Server.h:28,
from opencast.cpp:3:
/usr/include/c++/6.3.1/bits/move.h:87:5: note: candidate: template<class _Tp> constexpr _Tp&& std::forward(typename std::remove_reference<_From>::type&&)
forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
^~~~~~~
/usr/include/c++/6.3.1/bits/move.h:87:5: note: template argument deduction/substitution failed:
In file included from opencast.cpp:8:0:
deps/seasocks/src/main/c/seasocks/ResponseBuilder.h:71:35: note: couldn't deduce template parameter ‘_Tp’
(*_stream) << std::forward(t);
~~~~~~~~~~~~^~~