@@ -657,8 +657,8 @@ class method<Name, Return(Parameters...), Options...>
657
657
-> const std::uintptr_t*;
658
658
659
659
template <class Error >
660
- void check_static_offset (std::size_t actual, std::size_t expected) const
661
- noexcept (NoExcept);
660
+ auto check_static_offset (std::size_t actual, std::size_t expected) const
661
+ noexcept (NoExcept) -> void ;
662
662
663
663
template <typename MethodArgList, typename ArgType, typename ... MoreArgTypes>
664
664
auto resolve_uni (const ArgType& arg, const MoreArgTypes&... more_args) const
@@ -841,12 +841,33 @@ method<Name, Return(Parameters...), Options...>::~method() {
841
841
Policy::methods.remove (*this );
842
842
}
843
843
844
+ template <
845
+ typename Name, typename Return, typename ... Parameters, class ... Options>
846
+ template <class Error >
847
+ auto method<Name, Return(Parameters...), Options...>::check_static_offset(
848
+ std::size_t actual, std::size_t expected) const noexcept (NoExcept) -> void {
849
+ using namespace detail ;
850
+
851
+ if (actual != expected) {
852
+ if (Policy::template has_facet<policies::error_handler>) {
853
+ Error error;
854
+ error.method = Policy::template static_type<method>();
855
+ error.expected = this ->slots_strides [0 ];
856
+ error.actual = actual;
857
+ Policy::error (error);
858
+
859
+ abort ();
860
+ }
861
+ }
862
+ }
863
+
844
864
// -----------------------------------------------------------------------------
845
865
// method dispatch
846
866
847
867
template <
848
868
typename Name, typename Return, typename ... Parameters, class ... Options>
849
- auto inline method<Name, Return(Parameters...), Options...>::operator ()(
869
+ BOOST_FORCEINLINE auto
870
+ method<Name, Return(Parameters...), Options...>::operator ()(
850
871
detail::remove_virtual<Parameters>... args) const noexcept (NoExcept)
851
872
-> Return {
852
873
using namespace detail ;
@@ -858,9 +879,10 @@ auto inline method<Name, Return(Parameters...), Options...>::operator()(
858
879
template <
859
880
typename Name, typename Return, typename ... Parameters, class ... Options>
860
881
template <typename ... ArgType>
861
- inline typename method<Name, Return(Parameters...), Options...>::FunctionPointer
862
- method<Name, Return(Parameters...), Options...>::resolve(
863
- const ArgType&... args) const {
882
+ BOOST_FORCEINLINE
883
+ typename method<Name, Return(Parameters...), Options...>::FunctionPointer
884
+ method<Name, Return(Parameters...), Options...>::resolve(
885
+ const ArgType&... args) const {
864
886
using namespace detail ;
865
887
866
888
std::uintptr_t pf;
@@ -877,7 +899,7 @@ method<Name, Return(Parameters...), Options...>::resolve(
877
899
template <
878
900
typename Name, typename Return, typename ... Parameters, class ... Options>
879
901
template <typename ArgType>
880
- inline auto
902
+ BOOST_FORCEINLINE auto
881
903
method<Name, Return(Parameters...), Options...>::vptr(const ArgType& arg) const
882
904
noexcept (NoExcept) -> const std::uintptr_t* {
883
905
if constexpr (is_virtual_ptr<ArgType>) {
@@ -889,31 +911,11 @@ method<Name, Return(Parameters...), Options...>::vptr(const ArgType& arg) const
889
911
}
890
912
}
891
913
892
- template <
893
- typename Name, typename Return, typename ... Parameters, class ... Options>
894
- template <class Error >
895
- inline auto
896
- method<Name, Return(Parameters...), Options...>::check_static_offset(
897
- std::size_t actual, std::size_t expected) const noexcept (NoExcept) -> void {
898
- using namespace detail ;
899
-
900
- if (actual != expected) {
901
- if (Policy::template has_facet<policies::error_handler>) {
902
- Error error;
903
- error.method = Policy::template static_type<method>();
904
- error.expected = this ->slots_strides [0 ];
905
- error.actual = actual;
906
- Policy::error (error);
907
-
908
- abort ();
909
- }
910
- }
911
- }
912
-
913
914
template <
914
915
typename Name, typename Return, typename ... Parameters, class ... Options>
915
916
template <typename MethodArgList, typename ArgType, typename ... MoreArgTypes>
916
- inline auto method<Name, Return(Parameters...), Options...>::resolve_uni(
917
+ BOOST_FORCEINLINE auto
918
+ method<Name, Return(Parameters...), Options...>::resolve_uni(
917
919
const ArgType& arg, const MoreArgTypes&... more_args) const
918
920
noexcept (NoExcept) -> std::uintptr_t {
919
921
@@ -949,7 +951,7 @@ template<
949
951
template <
950
952
std::size_t VirtualArg, typename MethodArgList, typename ArgType,
951
953
typename ... MoreArgTypes>
952
- inline auto
954
+ BOOST_FORCEINLINE auto
953
955
method<Name, Return(Parameters...), Options...>::resolve_multi_first(
954
956
const ArgType& arg, const MoreArgTypes&... more_args) const
955
957
noexcept (NoExcept) -> std::uintptr_t {
@@ -997,7 +999,8 @@ template<
997
999
template <
998
1000
std::size_t VirtualArg, typename MethodArgList, typename ArgType,
999
1001
typename ... MoreArgTypes>
1000
- inline auto method<Name, Return(Parameters...), Options...>::resolve_multi_next(
1002
+ BOOST_FORCEINLINE auto
1003
+ method<Name, Return(Parameters...), Options...>::resolve_multi_next(
1001
1004
const std::uintptr_t * dispatch, const ArgType& arg,
1002
1005
const MoreArgTypes&... more_args) const noexcept (NoExcept)
1003
1006
-> std::uintptr_t {
@@ -1043,6 +1046,9 @@ inline auto method<Name, Return(Parameters...), Options...>::resolve_multi_next(
1043
1046
}
1044
1047
}
1045
1048
1049
+ // -----------------------------------------------------------------------------
1050
+ // Error handling
1051
+
1046
1052
template <
1047
1053
typename Name, typename Return, typename ... Parameters, class ... Options>
1048
1054
BOOST_NORETURN auto
0 commit comments