36 lines
		
	
	
	
		
			846 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			846 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| //
 | |
| // immer: immutable data structures for C++
 | |
| // Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente
 | |
| //
 | |
| // This software is distributed under the Boost Software License, Version 1.0.
 | |
| // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
 | |
| //
 | |
| 
 | |
| #include <immer/box.hpp>
 | |
| #include <immer/vector.hpp>
 | |
| #include <immer/vector_transient.hpp>
 | |
| 
 | |
| #include <catch.hpp>
 | |
| 
 | |
| TEST_CASE("issue-33")
 | |
| {
 | |
|     using Element = immer::box<std::string>;
 | |
|     auto vect     = immer::vector<Element>{};
 | |
| 
 | |
|     // this one works fine
 | |
|     for (auto i = 0; i < 100; ++i) {
 | |
|         vect = vect.push_back(Element("x"));
 | |
|     }
 | |
| 
 | |
|     // this one doesn't compile
 | |
|     auto t = vect.transient();
 | |
| 
 | |
|     for (auto i = 0; i < 100; ++i) {
 | |
|         t.push_back(Element("x"));
 | |
|     }
 | |
| 
 | |
|     vect = t.persistent();
 | |
| 
 | |
|     CHECK(*vect[0] == "x");
 | |
|     CHECK(*vect[99] == "x");
 | |
| }
 |