
pattern`щик
   
Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010
Репутация: 49 Всего: 110
|
перепробовал десятки комбинаций. не коннектиться. в общем, подумав в более удобной обстановке, пришел к выводу, что boost.rdb мне нужна только из-за возможности писать SQL запрос в виде С++ кода. в остальном, оно мне не нравится. SOCI как-то по лучше спроектирована. но SQL запросы писать в ней нужно по старинке но при попытке скомпилить минимальный пример: | Код | #include <iostream> #include <boost/fusion/include/io.hpp> #include <boost/rdb/sql.hpp> #include <boost/rdb/odbc.hpp>
using namespace boost::rdb::sql; using namespace boost::rdb::odbc;
BOOST_RDB_BEGIN_TABLE(person) BOOST_RDB_COLUMN(id, integer) BOOST_RDB_COLUMN(name, varchar<20>) BOOST_RDB_COLUMN(age, integer) BOOST_RDB_END_TABLE(person)
template<class T> std::string to_str(const T& obj) { std::ostringstream os; obj.str(os); return os.str(); }
int main() { person p; std::string str = to_str(select(p.name, p.age).where(p.id == 0)); std::cout << str << std::endl;
return 0; }
|
получаю такую ошибку: | Цитата | boost/rdb/sql/expression.hpp: In instantiation of 'boost::rdb::sql::extract_placeholders_from_list::result<boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&)>':
boost/utility/result_of.hpp:68:1: instantiated from 'boost::detail::result_of_nested_result<boost::rdb::sql::extract_placeholders_from_list, boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&)>'
boost/utility/result_of.hpp:75:1: instantiated from 'boost::detail::result_of_impl<boost::rdb::sql::extract_placeholders_from_list, boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&), false>'
boost/utility/detail/result_of_iterate.hpp:24:109: instantiated from 'boost::result_of<boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&)>'
boost/fusion/algorithm/iteration/detail/fold.hpp:48:80: instantiated from 'boost::fusion::detail::fold_apply<boost::fusion::vector<>, boost::fusion::vector_iterator<boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, 0>, boost::rdb::sql::extract_placeholders_from_list>'
boost/fusion/algorithm/iteration/detail/fold.hpp:209:57: instantiated from 'boost::fusion::detail::result_of_unrolled_fold<boost::fusion::vector<>, boost::fusion::vector_iterator<boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, 0>, boost::rdb::sql::extract_placeholders_from_list, 2>'
boost/rdb/sql/select.hpp:18:74: instantiated from 'boost::rdb::sql::result_of::extract_placeholders_from_map_entry<boost::rdb::ct::map_entry<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >'
boost/rdb/sql/expression.hpp:436:15: instantiated from 'boost::rdb::sql::extract_placeholders_from_map::result<boost::rdb::ct::map_entry<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::vector<> >'
boost/rdb/detail/static_map.hpp:56:17: instantiated from 'boost::rdb::ct::result_of::accumulate<boost::rdb::ct::map<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::rdb::ct::map0>, boost::rdb::sql::extract_placeholders_from_map, boost::fusion::vector<>, boost::rdb::ct::map_tag>'
boost/rdb/sql/expression.hpp:455:15: instantiated from 'boost::rdb::sql::result_of::placeholders_from_map<boost::rdb::ct::map<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::rdb::ct::map0> >'
boost/rdb/sql/select.hpp:78:67: instantiated from 'boost::rdb::sql::select_statement<boost::rdb::sql::sql2003, boost::rdb::sql::sql2003::exprs, boost::rdb::ct::map<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::rdb::ct::map0>, boost::rdb::sql::sql2003>'
boost/rdb/sql/expression.hpp:18:160: error: no type named 'placeholder_vector' in 'const struct boost::fusion::vector<>'
|
логично. потому что в boost::fusion::vector<>, нет свойства placeholder_vector. лазание по хидерам, успехов не принесло. буду благодарен любой помощи. спасибо. Это сообщение отредактировал(а) boostcoder - 6.9.2010, 17:54
|