diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2019-11-20 17:40:01 +0000 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2019-11-20 17:40:01 +0000 |
commit | a1bdfdbbf9a276ca84076bbeadea7b36ff8a695b (patch) | |
tree | d89f5f5196f07626df7525d7a7adcb1e48630435 /glib | |
parent | d3f7d6109d396adb449a150fc2b9feb3045634d0 (diff) | |
parent | 18f0ca8e618023dd15926e6d5a74587131703f3a (diff) | |
download | glibmm-a1bdfdbbf9a276ca84076bbeadea7b36ff8a695b.tar.gz |
Merge branch 'wip/gvalue_assert' into 'master'
Glib: Adding static check for template parameter
See merge request GNOME/glibmm!23
Diffstat (limited to 'glib')
-rw-r--r-- | glib/glibmm/value_custom.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/glib/glibmm/value_custom.h b/glib/glibmm/value_custom.h index e5c19895..8c333994 100644 --- a/glib/glibmm/value_custom.h +++ b/glib/glibmm/value_custom.h @@ -26,6 +26,7 @@ #include <glibmmconfig.h> #include <new> #include <typeinfo> +#include <type_traits> namespace Glib { @@ -98,6 +99,15 @@ private: template <class T, typename Enable = void> class Value : public ValueBase_Boxed { + static_assert(std::is_default_constructible<T>(), "T should be default constructible"); + static_assert(std::is_copy_constructible<T>(), "T should be copy constructible"); + static_assert(std::is_assignable<T&, T>(), "T should be assignable"); + static_assert(std::is_assignable<T&, T&>(), "T should be assignable"); + static_assert(std::is_assignable<T&, const T&>(), "T should be assignable"); + static_assert(std::is_destructible<T>(), "T should be destructible"); + static_assert(std::is_move_assignable<T>(), "T should be move assignable"); + static_assert(std::is_move_constructible<T>(), "T should be move constructible"); + public: #ifndef DOXYGEN_SHOULD_SKIP_THIS // Used in class Glib::Traits::ValueCompatibleWithWrapProperty. |