template <class It>
struct dynamic::IterableProxy {
typedef It const_iterator;
+ typedef typename It::value_type value_type;
/* implicit */ IterableProxy(const dynamic::ObjectImpl* o) : o_(o) { }
template<class Container,
class From = detail::CopiedSource<typename Container::value_type,
- Container>>
+ Container>>
From from(Container&& source) {
return From(std::move(source));
}
EXPECT_EQ(dynamic(5), from(array3) | rconcat | rconcat | sum);
}
+TEST(Gen, DynamicObject) {
+ const dynamic obj = dynamic::object(1, 2)(3, 4);
+ EXPECT_EQ(dynamic(4), from(obj.keys()) | sum);
+ EXPECT_EQ(dynamic(6), from(obj.values()) | sum);
+ EXPECT_EQ(dynamic(4), from(obj.items()) | get<0>() | sum);
+ EXPECT_EQ(dynamic(6), from(obj.items()) | get<1>() | sum);
+}
+
TEST(StringGen, EmptySplit) {
auto collect = eachTo<std::string>() | as<vector>();
{