@@ -434,12 +434,13 @@ namespace sqlite {
434
434
typedef utility::function_traits<Function> traits;
435
435
436
436
auto funcPtr = new auto (std::forward<Function>(func));
437
- sqlite3_create_function_v2 (
437
+ if ( int result = sqlite3_create_function_v2 (
438
438
_db.get (), name.c_str (), traits::arity, SQLITE_UTF8, funcPtr,
439
439
sql_function_binder::scalar<traits::arity, typename std::remove_reference<Function>::type>,
440
440
nullptr , nullptr , [](void * ptr){
441
441
delete static_cast <decltype (funcPtr)>(ptr);
442
- });
442
+ }))
443
+ exceptions::throw_sqlite_error (result);
443
444
}
444
445
445
446
template <typename StepFunction, typename FinalFunction>
@@ -455,7 +456,7 @@ namespace sqlite {
455
456
[](void * ptr){
456
457
delete static_cast <decltype (funcPtr)>(ptr);
457
458
}))
458
- exceptions::throw_sqlite_error (result);
459
+ exceptions::throw_sqlite_error (result);
459
460
}
460
461
461
462
};
@@ -488,7 +489,7 @@ namespace sqlite {
488
489
Function&& function,
489
490
Values&&... values
490
491
) {
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{};
492
493
get_col_from_db (db, sizeof ...(Values), value);
493
494
494
495
run<Function>(db, function, std::forward<Values>(values)..., std::move (value));
@@ -882,7 +883,13 @@ namespace sqlite {
882
883
sqlite3_value** vals,
883
884
Values&&... values
884
885
) {
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{};
886
893
get_val_from_db (vals[sizeof ...(Values) - 1 ], value);
887
894
888
895
step<Count, Functions>(db, count, vals, std::forward<Values>(values)..., std::move (value));
@@ -934,7 +941,11 @@ namespace sqlite {
934
941
sqlite3_value** vals,
935
942
Values&&... values
936
943
) {
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{};
938
949
get_val_from_db (vals[sizeof ...(Values)], value);
939
950
940
951
scalar<Count, Function>(db, count, vals, std::forward<Values>(values)..., std::move (value));
0 commit comments