[vlc-devel] [vlc-commits] Provide a default move ctor & assignment operator for challenged compilers

Tristan Matthews tmatth at videolan.org
Fri Apr 3 16:53:48 CEST 2015


On Fri, Apr 3, 2015 at 7:09 AM, Hugo Beauzée-Luyssen <git at videolan.org> wrote:
> npapi-vlc | branch: cleanup | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Fri Apr  3 10:31:26 2015 +0200| [f9aa81a49e7c53e1fc6f646c773ca091386bcde1] | committer: Hugo Beauzée-Luyssen
>
> Provide a default move ctor & assignment operator for challenged compilers
>
>> http://git.videolan.org/gitweb.cgi/npapi-vlc.git/?a=commit;h=f9aa81a49e7c53e1fc6f646c773ca091386bcde1
> ---
>
>  npapi/utils.hpp          |   30 ++++++++++++++++++++++++++++--
>  npapi/vlcplugin_base.cpp |    9 +++++++++
>  2 files changed, 37 insertions(+), 2 deletions(-)
>
> diff --git a/npapi/utils.hpp b/npapi/utils.hpp
> index f741ed8..1f55544 100644
> --- a/npapi/utils.hpp
> +++ b/npapi/utils.hpp
> @@ -494,7 +494,14 @@ public:
>          return *this;
>      }
>
> +#ifndef _MSC_VER
>      Variant(Variant&& v) = default;
> +#else
> +    Variant(Variant&& v)
> +        : m_variant( std::move( v.m_variant ) )
> +    {
> +    }
> +#endif
>
>      Variant& operator=(Variant&& v)
>      {
> @@ -647,8 +654,27 @@ public:
>          return m_size;
>      }
>
> -    VariantArray(const Variant&) = delete;
> -    VariantArray& operator=(const Variant&) = delete;
> +    VariantArray(const VariantArray&) = delete;
> +    VariantArray& operator=(const VariantArray&) = delete;
> +#ifndef _MSC_VER
> +    VariantArray(VariantArray&&) = default;
> +    VariantArray& operator=(VariantArray&&) = default;
> +#else
> +    VariantArray(VariantArray&& v)
> +        : m_variants(std::move( v.m_variants ) )
> +        , m_size( v.m_size )
> +    {
> +    }
> +
> +    VariantArray& operator=(VariantArray&& v)
> +    {
> +        if (&v == this)
> +            return *this;
> +        m_variants = std::move(v.m_variants);
> +        m_size = v.m_size;
> +    }

You need return *this at the end also, no?

> +
> +#endif
>  private:
>      VPtr m_variants;
>      size_t m_size;
> diff --git a/npapi/vlcplugin_base.cpp b/npapi/vlcplugin_base.cpp
> index 89cf69d..67b8c1c 100644
> --- a/npapi/vlcplugin_base.cpp
> +++ b/npapi/vlcplugin_base.cpp
> @@ -304,7 +304,16 @@ public:
>      }
>
>      CallbackClosure(const CallbackClosure&) = delete;
> +
> +#ifndef _MSC_VER
>      CallbackClosure(CallbackClosure&&) = default;
> +#else
> +    CallbackClosure(CallbackClosure&& c)
> +        : _browser( std::move(c._browser) )
> +        , _listener( std::move(c._listener) )
> +    {
> +    }
> +#endif
>
>      template <typename... Args>
>      void operator()(Args&&... params) const
>
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> https://mailman.videolan.org/listinfo/vlc-commits



More information about the vlc-devel mailing list