summaryrefslogtreecommitdiff
path: root/glib
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjellahlstedt@gmail.com>2019-11-20 17:40:01 +0000
committerKjell Ahlstedt <kjellahlstedt@gmail.com>2019-11-20 17:40:01 +0000
commita1bdfdbbf9a276ca84076bbeadea7b36ff8a695b (patch)
treed89f5f5196f07626df7525d7a7adcb1e48630435 /glib
parentd3f7d6109d396adb449a150fc2b9feb3045634d0 (diff)
parent18f0ca8e618023dd15926e6d5a74587131703f3a (diff)
downloadglibmm-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.h10
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.