@@ -434,12 +434,13 @@ namespace sqlite {
434434 typedef utility::function_traits<Function> traits;
435435
436436 auto funcPtr = new auto (std::forward<Function>(func));
437- sqlite3_create_function_v2 (
437+ if ( int result = sqlite3_create_function_v2 (
438438 _db.get (), name.c_str (), traits::arity, SQLITE_UTF8, funcPtr,
439439 sql_function_binder::scalar<traits::arity, typename std::remove_reference<Function>::type>,
440440 nullptr , nullptr , [](void * ptr){
441441 delete static_cast <decltype (funcPtr)>(ptr);
442- });
442+ }))
443+ exceptions::throw_sqlite_error (result);
443444 }
444445
445446 template <typename StepFunction, typename FinalFunction>
@@ -455,7 +456,7 @@ namespace sqlite {
455456 [](void * ptr){
456457 delete static_cast <decltype (funcPtr)>(ptr);
457458 }))
458- exceptions::throw_sqlite_error (result);
459+ exceptions::throw_sqlite_error (result);
459460 }
460461
461462 };
@@ -488,7 +489,7 @@ namespace sqlite {
488489 Function&& function,
489490 Values&&... values
490491 ) {
491- nth_argument_type<Function, sizeof ...(Values)> value{};
492+ typename std::remove_cv< typename std::remove_reference< nth_argument_type<Function, sizeof ...(Values)>>::type>::type value{};
492493 get_col_from_db (db, sizeof ...(Values), value);
493494
494495 run<Function>(db, function, std::forward<Values>(values)..., std::move (value));
@@ -882,7 +883,13 @@ namespace sqlite {
882883 sqlite3_value** vals,
883884 Values&&... values
884885 ) {
885- typename utility::function_traits<typename Functions::first_type>::template argument<sizeof ...(Values)> value{};
886+ typename std::remove_cv<
887+ typename std::remove_reference<
888+ typename utility::function_traits<
889+ typename Functions::first_type
890+ >::template argument<sizeof ...(Values)>
891+ >::type
892+ >::type value{};
886893 get_val_from_db (vals[sizeof ...(Values) - 1 ], value);
887894
888895 step<Count, Functions>(db, count, vals, std::forward<Values>(values)..., std::move (value));
@@ -934,7 +941,11 @@ namespace sqlite {
934941 sqlite3_value** vals,
935942 Values&&... values
936943 ) {
937- typename utility::function_traits<Function>::template argument<sizeof ...(Values)> value{};
944+ typename std::remove_cv<
945+ typename std::remove_reference<
946+ typename utility::function_traits<Function>::template argument<sizeof ...(Values)>
947+ >::type
948+ >::type value{};
938949 get_val_from_db (vals[sizeof ...(Values)], value);
939950
940951 scalar<Count, Function>(db, count, vals, std::forward<Values>(values)..., std::move (value));
0 commit comments