"git@developer.sourcefind.cn:OpenDAS/torchaudio.git" did not exist on "fad19fabd036879fc3e6a78d544b94c4440c1666"
Commit e26feaa8 authored by Davis King's avatar Davis King
Browse files

Removed dangerous implicit casts between unrelated member function pointer types.

Also made the spec more clear.

--HG--
extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%402619
parent ff441e55
...@@ -23,11 +23,16 @@ namespace dlib ...@@ -23,11 +23,16 @@ namespace dlib
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
template <unsigned long num_args>
class mfp_kernel_1_base_class class mfp_kernel_1_base_class
{ {
/* /*
All member function pointer classes inherit from this class. This All member function pointer classes inherit from this class. This
is where most of the things in a member function pointer are defined. is where most of the things in a member function pointer are defined.
The reason for the num_args template argument to this class is to prevent
any sort of implicit casting between derived member function pointer classes
that take different numbers of arguments.
*/ */
protected: protected:
enum mfp_type { mfp_nonconst, mfp_const, mfp_null}; enum mfp_type { mfp_nonconst, mfp_const, mfp_null};
...@@ -165,7 +170,7 @@ namespace dlib ...@@ -165,7 +170,7 @@ namespace dlib
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
template <> template <>
class member_function_pointer_kernel_1<void,void,void,void> : public mfp_kernel_1_base_class class member_function_pointer_kernel_1<void,void,void,void> : public mfp_kernel_1_base_class<0>
{ {
class mp_base : public mp_base_base { class mp_base : public mp_base_base {
public: public:
...@@ -224,7 +229,7 @@ namespace dlib ...@@ -224,7 +229,7 @@ namespace dlib
template < template <
typename PARAM1 typename PARAM1
> >
class member_function_pointer_kernel_1<PARAM1,void,void,void> : public mfp_kernel_1_base_class class member_function_pointer_kernel_1<PARAM1,void,void,void> : public mfp_kernel_1_base_class<1>
{ {
class mp_base : public mp_base_base { class mp_base : public mp_base_base {
public: public:
...@@ -284,7 +289,7 @@ namespace dlib ...@@ -284,7 +289,7 @@ namespace dlib
typename PARAM1, typename PARAM1,
typename PARAM2 typename PARAM2
> >
class member_function_pointer_kernel_1<PARAM1,PARAM2,void,void> : public mfp_kernel_1_base_class class member_function_pointer_kernel_1<PARAM1,PARAM2,void,void> : public mfp_kernel_1_base_class<2>
{ {
class mp_base : public mp_base_base { class mp_base : public mp_base_base {
public: public:
...@@ -345,7 +350,7 @@ namespace dlib ...@@ -345,7 +350,7 @@ namespace dlib
typename PARAM2, typename PARAM2,
typename PARAM3 typename PARAM3
> >
class member_function_pointer_kernel_1<PARAM1,PARAM2,PARAM3,void> : public mfp_kernel_1_base_class class member_function_pointer_kernel_1<PARAM1,PARAM2,PARAM3,void> : public mfp_kernel_1_base_class<3>
{ {
class mp_base : public mp_base_base { class mp_base : public mp_base_base {
public: public:
...@@ -407,7 +412,7 @@ namespace dlib ...@@ -407,7 +412,7 @@ namespace dlib
typename PARAM3, typename PARAM3,
typename PARAM4 typename PARAM4
> >
class member_function_pointer_kernel_1 : public mfp_kernel_1_base_class class member_function_pointer_kernel_1 : public mfp_kernel_1_base_class<4>
{ {
class mp_base : public mp_base_base { class mp_base : public mp_base_base {
public: public:
......
...@@ -167,11 +167,14 @@ namespace dlib ...@@ -167,11 +167,14 @@ namespace dlib
If this exception is thrown then #is_set() == false If this exception is thrown then #is_set() == false
!*/ !*/
operator bool ( operator some_undefined_pointer_type (
) const; ) const;
/*! /*!
ensures ensures
- returns is_set() - if (is_set()) then
- returns a non 0 value
- else
- returns a 0 value
!*/ !*/
bool operator! ( bool operator! (
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment