[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