Comments (13)
G++ fails at compiling this example. It compiles fine with clang.
from silicon.
It does not:
msvobod :: tmp/silicon/examples ‹master› » clang -std=c++14 blog.cc -I ../ -I ../iod/iod/ -lmicrohttpd -o hello_world 1 ↵
In file included from blog.cc:1:
In file included from ../silicon/backends/mhd.hh:3:
In file included from /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/memory:62:
In file included from /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/stl_algobase.h:64:
In file included from /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/stl_pair.h:59:
In file included from /usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/bits/move.h:57:
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:545:14: fatal error: recursive template instantiation exceeded maximum depth of
256
: public _or<is_lvalue_reference<_Tp>,
^
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:115:26: note: in instantiation of template class
'std::is_reference<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &>' requested here
: public conditional<_B1::value, _B1, _B2>::type
^
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:120:14: note: in instantiation of template class
'std::_or<std::is_reference<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &>, std::is_void<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&>
&> >' requested here
: public conditional<_B1::value, _B1, _or<_B2, _B3, _Bn...>>::type
^
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:148:39: note: in instantiation of template class
'std::_or<std::is_function<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &>, std::is_reference<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection
*&> &>, std::is_void<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &> >' requested here
: public integral_constant<bool, !_Pp::value>
^
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:565:14: note: in instantiation of template class
'std::_not<std::_or<std::is_function<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &>, std::is_reference<std::_Tuple_impl<16, sl::mhd_response *&,
MHD_Connection *&> &>, std::is_void<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &> > >' requested here
: public _not<_or<is_function<_Tp>, is_reference<_Tp>,
^
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:115:26: note: in instantiation of template class
'std::is_object<std::_Tuple_impl<16, sl::mhd_response *&, MHD_Connection *&> &>' requested here
: public conditional<_B1::value, _B1, _B2>::type
^
/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../include/c++/5.3.0/type_traits:602:14: note: (skipping 247 contexts in backtrace; use
-ftemplate-backtrace-limit=0 to see all)
: public _or<is_object<_Tp>, is_reference<_Tp>>::type
^
/usr/local/include/iod/di.hh:145:42: note: in instantiation of function template specialization 'std::forward_as_tuple<sl::mhd_session_cookie &, sl::sqlite_connection_factory
&, sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > > &,
sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_user_id_t::variable_type<int,
iod::sio<s::_read_only_t> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > > > &, sl::hashmap_session_factory &, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > &, sl::mhd_request *&, sl::mhd_response *&, MHD_Connection *&, sl::mhd_session_cookie &,
sl::sqlite_connection_factory &, sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > > &,
sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_user_id_t::variable_type<int,
iod::sio<s::_read_only_t> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > > > &, sl::hashmap_session_factory &, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > &, sl::mhd_request *&, sl::mhd_response *&, MHD_Connection *&>' requested here
return di_meta_instantiate(std::forward_as_tuple(to_inject...),
^
../silicon/service.hh:36:5: note: in instantiation of member function 'sl::ws_handler<sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_login_t>, iod::sio<>,
iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<>
> > >, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >,
void, (lambda at ../silicon/api.hh:77:12)>, std::tuple<sl::mhd_session_cookie, sl::sqlite_connection_factory, sl::sql_orm_factory<sl::sqlite_connection,
iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int,
iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_user_id_t::variable_type<int, iod::sio<s::_read_only_t> >,
s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::_cxx11::basic_string<char, iod::sio<> > > >,
sl::hashmap_session_factory >, sl::mhd_json_service_utils, sl::mhd_request *, sl::mhd_response *, MHD_Connection *>::operator()' requested here
ws_handler(P proc) : procedure(proc) {}
^
../silicon/service.hh:165:19: note: in instantiation of member function 'sl::ws_handler<sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_login_t>, iod::sio<>,
iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<>
> > >, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >,
void, (lambda at ../silicon/api.hh:77:12)>, std::tuple<sl::mhd_session_cookie, sl::sqlite_connection_factory, sl::sql_orm_factory<sl::sqlite_connection,
iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int,
iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_user_id_t::variable_type<int, iod::sio<s::_read_only_t> >,
s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::hashmap_session_factory >, sl::mhd_json_service_utils, sl::mhd_request *, sl::mhd_response *, MHD_Connection *>::ws_handler' requested here
new ws_handler<P, middlewares_type, S, ARGS...>(f.content);
^
../silicon/service.hh:121:7: note: in instantiation of function template specialization 'sl::service<sl::mhd_json_service_utils, std::tuple<sl::mhd_session_cookie,
sl::sqlite_connection_factory, sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_user_id_t::variable_type<int,
iod::sio<s::_read_only_t> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > > >, sl::hashmap_session_factory >, sl::mhd_request *, sl::mhd_response *, MHD_Connection
*>::index_api<std::tuple<sl::api_node<sl::http_route<sl::http_post, std::tuple<s::_login_t>, iod::sio<>, iod::sio<>,
iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_login_t>, iod::sio<>, iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string,
iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string,
iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, void, (lambda at ../silicon/api.hh:77:12)> >,
sl::api_node<sl::http_route<sl::http_get, std::tuple<s::_logout_t>, iod::sio<>, iod::sio<>, iod::sio<> >, sl::procedure<sl::http_route<sl::http_get,
std::tuple<s::_logout_t>, iod::sio<>, iod::sio<>, iod::sio<> >, iod::sio<>, void, (lambda at ./blog_api.hh:69:19)> >, sl::api_node<sl::http_route<sl::http_verb_any,
std::tuple<s::_user_t>, iod::sio<>, iod::sio<>, iod::sio<> >, std::tuple<sl::api_node<sl::http_route<sl::http_get, std::tuple<s::_user_t, s::_get_by_id_t>, iod::sio<>,
iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<> >, sl::procedure<sl::http_route<sl::http_get, std::tuple<s::_user_t, s::_get_by_id_t>, iod::sio<>,
iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<> >, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<s::_id_t::variable_type<int,
iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_user_t, s::_create_t>, iod::sio<>, iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_user_t, s::_create_t>,
iod::sio<>, iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)>
>, sl::api_node<sl::http_route<sl::http_post, std::tuple<s::_user_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_user_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
iod::sio<s::_id_t::variable_type<int, iod::sio<> >, s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, void, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_user_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post,
std::tuple<s::_user_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> >
>, void, (lambda at ../silicon/api.hh:77:12)> > > >, sl::api_node<sl::http_route<sl::http_verb_any, std::tuple<s::_post_t>, iod::sio<>, iod::sio<>, iod::sio<> >,
std::tuple<sl::api_node<sl::http_route<sl::http_get, std::tuple<s::_post_t, s::_get_by_id_t>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<>
>, sl::procedure<sl::http_route<sl::http_get, std::tuple<s::_post_t, s::_get_by_id_t>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<> >,
iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >,
s::_user_id_t::variable_type<int, iod::sio<s::_read_only_t> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_create_t>, iod::sio<>, iod::sio<>, iod::sio<s::_title_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_post_t, s::_create_t>,
iod::sio<>, iod::sio<>, iod::sio<s::_title_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > > >, iod::sio<s::_title_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_post_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
iod::sio<s::_id_t::variable_type<int, iod::sio<> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, void, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> >
>, void, (lambda at ../silicon/api.hh:77:12)> > > > > >' requested here
index_api(api);
^
../silicon/backends/mhd.hh:409:18: note: in instantiation of function template specialization 'sl::service<sl::mhd_json_service_utils, std::tuple<sl::mhd_session_cookie,
sl::sqlite_connection_factory, sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::sql_orm_factory<sl::sqlite_connection, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_user_id_t::variable_type<int,
iod::sio<s::_read_only_t> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > > >, sl::hashmap_session_factory >, sl::mhd_request *, sl::mhd_response *, MHD_Connection
*>::service<std::tuple<sl::api_node<sl::http_route<sl::http_post, std::tuple<s::_login_t>, iod::sio<>, iod::sio<>,
iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_login_t>, iod::sio<>, iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string,
iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string,
iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, void, (lambda at ../silicon/api.hh:77:12)> >,
sl::api_node<sl::http_route<sl::http_get, std::tuple<s::_logout_t>, iod::sio<>, iod::sio<>, iod::sio<> >, sl::procedure<sl::http_route<sl::http_get,
std::tuple<s::_logout_t>, iod::sio<>, iod::sio<>, iod::sio<> >, iod::sio<>, void, (lambda at ./blog_api.hh:69:19)> >, sl::api_node<sl::http_route<sl::http_verb_any,
std::tuple<s::_user_t>, iod::sio<>, iod::sio<>, iod::sio<> >, std::tuple<sl::api_node<sl::http_route<sl::http_get, std::tuple<s::_user_t, s::_get_by_id_t>, iod::sio<>,
iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<> >, sl::procedure<sl::http_route<sl::http_get, std::tuple<s::_user_t, s::_get_by_id_t>, iod::sio<>,
iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<> >, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<s::_id_t::variable_type<int,
iod::sio<s::_auto_increment_t, s::_primary_key_t> >, s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_user_t, s::_create_t>, iod::sio<>, iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_user_t, s::_create_t>,
iod::sio<>, iod::sio<>, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, iod::sio<s::_login_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)>
>, sl::api_node<sl::http_route<sl::http_post, std::tuple<s::_user_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_user_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
iod::sio<s::_id_t::variable_type<int, iod::sio<> >, s::_login_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_password_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, void, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_user_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post,
std::tuple<s::_user_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> >
>, void, (lambda at ../silicon/api.hh:77:12)> > > >, sl::api_node<sl::http_route<sl::http_verb_any, std::tuple<s::_post_t>, iod::sio<>, iod::sio<>, iod::sio<> >,
std::tuple<sl::api_node<sl::http_route<sl::http_get, std::tuple<s::_post_t, s::_get_by_id_t>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<>
>, sl::procedure<sl::http_route<sl::http_get, std::tuple<s::_post_t, s::_get_by_id_t>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<> >,
iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, iod::sio<s::_id_t::variable_type<int, iod::sio<s::_auto_increment_t, s::_primary_key_t> >,
s::_user_id_t::variable_type<int, iod::sio<s::_read_only_t> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_create_t>, iod::sio<>, iod::sio<>, iod::sio<s::_title_t::variable_type<std::__cxx11::basic_string, iod::sio<> >,
s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_post_t, s::_create_t>,
iod::sio<>, iod::sio<>, iod::sio<s::_title_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > > >, iod::sio<s::_title_t::variable_type<std::__cxx11::basic_string, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char,
iod::sio<> > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> > >, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
sl::procedure<sl::http_route<sl::http_post, std::tuple<s::_post_t, s::_update_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> >,
s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >, s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > > >,
iod::sio<s::_id_t::variable_type<int, iod::sio<> >, s::_title_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> >,
s::_body_t::variable_typestd::__cxx11::basic_string<char, iod::sio<> > >, void, (lambda at ../silicon/api.hh:77:12)> >, sl::api_node<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, sl::procedure<sl::http_route<sl::http_post,
std::tuple<s::_post_t, s::_destroy_t>, iod::sio<>, iod::sio<>, iod::sio<s::_id_t::variable_type<int, iod::sio<> > > >, iod::sio<s::_id_t::variable_type<int, iod::sio<> >
>, void, (lambda at ../silicon/api.hh:77:12)> > > > > >' requested here
auto s = new service_t(api, m2);
^
1 error generated.
msvobod :: tmp/silicon/examples ‹master› » clang --version 1 ↵
clang version 3.7.1 (tags/RELEASE_371/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
from silicon.
Sorry, you need to pass the option -ftemplate-depth=1024 to clang. I'll add this to the documentation.
from silicon.
Now it is better :-)
msvobod :: tmp/silicon/examples ‹master› » clang -ftemplate-depth=1024 -std=c++14 blog.cc -I ../ -I ../iod/iod/ -lmicrohttpd -o hello_world 1 ↵
/usr/bin/ld: /tmp/blog-0c479d.o: undefined reference to symbol 'nettle_sha3_512_init@@NETTLE_6'
/usr/lib/libnettle.so.6: error adding symbols: DSO missing from command line
clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)
Do you know what if libnettle and why it complains on that undefined reference?
from silicon.
Oh I see... Nevermind.
from silicon.
Do you have any idea from where those _ubsan comes?
msvobod :: tmp/silicon/examples ‹master› » cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ 2 ↵
-- Boost version: 1.60.0
-- Found the following Boost libraries:
-- system
-- thread
-- date_time
-- program_options
-- filesystem
-- chrono
-- atomic
-- Configuring done
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_CXX_COMPILER= clang++
-- The C compiler identification is GNU 5.3.0
-- The CXX compiler identification is Clang 3.7.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.60.0
-- Found the following Boost libraries:
-- system
-- thread
-- date_time
-- program_options
-- filesystem
-- chrono
-- atomic
-- Configuring done
-- Generating done
-- Build files have been written to: /home/milan/tmp/silicon/examples
msvobod :: tmp/silicon/examples ‹master› » make
Scanning dependencies of target blog
[ 12%] Building CXX object CMakeFiles/blog.dir/blog.cc.o
[ 25%] Linking CXX executable blog
[ 25%] Built target blog
Scanning dependencies of target simple
[ 37%] Building CXX object CMakeFiles/simple.dir/simple.cc.o
[ 50%] Linking CXX executable simple
[ 50%] Built target simple
Scanning dependencies of target blog_test
[ 62%] Building CXX object CMakeFiles/blog_test.dir/blog_test.cc.o
[ 75%] Linking CXX executable blog_test
/usr/local/lib/liblwan-common.a(lwan.c.o): In function lwan_module_init': /home/milan/tmp/silicon/lwan/common/lwan.c:63: undefined reference to
__ubsan_handle_type_mismatch'
/home/milan/tmp/silicon/lwan/common/lwan.c:65: undefined reference to __ubsan_handle_type_mismatch' /usr/local/lib/liblwan-common.a(lwan.c.o): In function
lwan_module_shutdown':
/home/milan/tmp/silicon/lwan/common/lwan.c:71: undefined reference to __ubsan_handle_type_mismatch' /usr/local/lib/liblwan-common.a(lwan.c.o): In function
find_handler_symbol':
/home/milan/tmp/silicon/lwan/common/lwan.c:76: undefined reference to __ubsan_handle_nonnull_arg' /home/milan/tmp/silicon/lwan/common/lwan.c:78: undefined reference to
__ubsan_handle_nonnull_arg'
/usr/local/lib/liblwan-common.a(lwan.c.o): In function lwan_module_find': /home/milan/tmp/silicon/lwan/common/lwan.c:84: undefined reference to
__ubsan_handle_type_mismatch'
/home/milan/tmp/silicon/lwan/common/lwan.c:91: undefined reference to __ubsan_handle_type_mismatch' /home/milan/tmp/silicon/lwan/common/lwan.c:91: undefined reference to
__ubsan_handle_type_mismatch'
/home/milan/tmp/silicon/lwan/common/lwan.c:91: undefined reference to __ubsan_handle_type_mismatch' /home/milan/tmp/silicon/lwan/common/lwan.c:91: undefined reference to
__ubsan_handle_type_mismatch'
/usr/local/lib/liblwan-common.a(lwan.c.o):/home/milan/tmp/silicon/lwan/common/lwan.c:94: more undefined references to __ubsan_handle_type_mismatch' follow /usr/local/lib/liblwan-common.a(lwan.c.o): In function
add_url_map':
/home/milan/tmp/silicon/lwan/common/lwan.c:151: undefined reference to __ubsan_handle_nonnull_arg' /home/milan/tmp/silicon/lwan/common/lwan.c:151: undefined reference to
__ubsan_handle_nonnull_arg'
/home/milan/tmp/silicon/lwan/common/lwan.c:153: undefined reference to __ubsan_handle_type_mismatch' /home/milan/tmp/silicon/lwan/common/lwan.c:153: undefined reference to
__ubsan_handle_nonnull_arg'
from silicon.
"fixed" by switching the test to use mhd.
from silicon.
And now websocketpp:
[ 87%] Building CXX object CMakeFiles/ws_broadcast_server.dir/ws_broadcast_server.cc.o
In file included from /home/milan/tmp/silicon/examples/ws_broadcast_server.cc:3:
In file included from /home/milan/tmp/silicon/examples/../silicon/backends/websocketpp.hh:13:
In file included from /home/milan/tmp/silicon/examples/../silicon/backends/websocketpp_remote_client.hh:11:
/home/milan/tmp/silicon/examples/../silicon/backends/wspp_connection.hh:16:65: error: invalid operands to binary expression ('const websocketpp::connection_hdl'
(aka 'const weak_ptr') and 'const websocketpp::connection_hdl')
bool operator<(const wspp_connection& a) const { return hdl < a.hdl; }
~~~ ^ ~~~~~
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:57:12: error: 'wspp_connection' does not refer to a value
std::set<wspp_connection> users;
^
/home/milan/tmp/silicon/examples/../silicon/backends/wspp_connection.hh:11:10: note: declared here
struct wspp_connection
^
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:57:8: error: no member named 'set' in namespace 'std'
std::set<wspp_connection> users;
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:57:29: error: use of undeclared identifier 'users'; did you mean '_user'?
std::set<wspp_connection> users;
^~~~~
_user
/home/milan/tmp/silicon/examples/symbols.hh:110:5: note: '_user' declared here
iod_define_symbol(user)
^
/usr/local/include/iod/symbol.hh:69:27: note: expanded from macro 'iod_define_symbol'
constexpr _##SYMBOL##_t _##SYMBOL; \
^
<scratch space>:388:1: note: expanded from here
_user
^
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:69:39: error: use of undeclared identifier 'users'; did you mean '_user'?
for (const wspp_connection& c : users) rclient(c).message(p.message);
^~~~~
_user
/home/milan/tmp/silicon/examples/symbols.hh:110:5: note: '_user' declared here
iod_define_symbol(user)
^
/usr/local/include/iod/symbol.hh:69:27: note: expanded from macro 'iod_define_symbol'
constexpr _##SYMBOL##_t _##SYMBOL; \
^
<scratch space>:388:1: note: expanded from here
_user
^
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:69:37: error: invalid range expression of type 'const s::_user_t'; no viable 'begin' function available
for (const wspp_connection& c : users) rclient(c).message(p.message);
^
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:81:78: error: use of undeclared identifier 'users'
_on_open = [&] (wspp_connection& c) { lock l(users_mutex); users.insert(c); },
^
/home/milan/tmp/silicon/examples/ws_broadcast_server.cc:82:79: error: use of undeclared identifier 'users'
_on_close = [&] (wspp_connection& c) { lock l(users_mutex); users.erase(c); },
^
8 errors generated.
CMakeFiles/ws_broadcast_server.dir/build.make:62: návod pro cíl „CMakeFiles/ws_broadcast_server.dir/ws_broadcast_server.cc.o“ selhal
make[2]: *** [CMakeFiles/ws_broadcast_server.dir/ws_broadcast_server.cc.o] Chyba 1
CMakeFiles/Makefile2:178: návod pro cíl „CMakeFiles/ws_broadcast_server.dir/all“ selhal
make[1]: *** [CMakeFiles/ws_broadcast_server.dir/all] Chyba 2
Makefile:83: návod pro cíl „all“ selhal
from silicon.
I'll push a fix tomorrow.
from silicon.
Problem solved by 97bdd57
from silicon.
I close this issue but do not hesitate to reopen it whenever you encounter any problems.
from silicon.
Thanks! It compiles now.
from silicon.
Great! Thanks for your feedback. Note that I'll probably add the https://github.com/alexhultman/uWebSockets backend. It claims to be a faster websocket library.
from silicon.
Related Issues (20)
- websocket example on your website does not compile with g++ HOT 5
- how to bind 0.0.0.0? HOT 1
- How to accept `std::vector<int>` as get or post parameter HOT 5
- Add `Content-Type: application/json` to response HOT 1
- [Error] websocketpp/config/asio_no_tls.hpp: No such file or directory HOT 2
- ws_broadcast_server.cc broadcast all clients from the server? HOT 2
- urldecode.hh compiler error HOT 1
- a convenient HTTP client for calling other APIs HOT 1
- Handling db connection at run time and documenting rest api example HOT 2
- How to submit a file? HOT 6
- Possibility to add a custom HTTP header ? HOT 4
- How to set status code of response?
- Conan package
- How to accept vector of objects? HOT 1
- CI HOT 3
- Error on run time websocket broadcast
- Documentation on adding new backends
- Can global middlewares access request & response? HOT 5
- Sql fails with iteration on list of records HOT 3
- silicon
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from silicon.