瀏覽代碼

meta_range: non-const to const iterator conversion guaranteed

Michele Caini 4 年之前
父節點
當前提交
6e45f0d5b8
共有 1 個文件被更改,包括 14 次插入0 次删除
  1. 14 0
      test/entt/meta/meta_range.cpp

+ 14 - 0
test/entt/meta/meta_range.cpp

@@ -39,3 +39,17 @@ TEST_F(MetaRange, EmptyRange) {
     entt::meta_range<entt::meta_data> range{};
     entt::meta_range<entt::meta_data> range{};
     ASSERT_EQ(range.begin(), range.end());
     ASSERT_EQ(range.begin(), range.end());
 }
 }
+
+TEST_F(MetaRange, IteratorConversion) {
+    using namespace entt::literals;
+
+    entt::meta_range<entt::meta_type> range{entt::internal::meta_context::local()};
+    typename decltype(range)::iterator it = range.begin();
+    typename decltype(range)::const_iterator cit = it;
+
+    static_assert(std::is_same_v<decltype(*it), entt::meta_type>);
+    static_assert(std::is_same_v<decltype(*cit), entt::meta_type>);
+
+    ASSERT_EQ(*it, entt::resolve<double>());
+    ASSERT_EQ(*it, *cit);
+}