diff --git a/src/Decomposition/ORB_unit_test.hpp b/src/Decomposition/ORB_unit_test.hpp
index 9b3955ccd05c979916073deb6f8e6c89659c5510..93a07a99f55fd2a83bf16cb8738f0df36848a7bf 100755
--- a/src/Decomposition/ORB_unit_test.hpp
+++ b/src/Decomposition/ORB_unit_test.hpp
@@ -36,9 +36,9 @@ BOOST_AUTO_TEST_CASE( ORB_test_use)
 	{
 		auto key = vp_it.get();
 
-		vp.template get<p::x>(key)[0] = ud(eg);
-		vp.template get<p::x>(key)[1] = ud(eg);
-		vp.template get<p::x>(key)[2] = ud(eg);
+		vp.get<p::x>(key)[0] = ud(eg);
+		vp.get<p::x>(key)[1] = ud(eg);
+		vp.get<p::x>(key)[2] = ud(eg);
 
 		++vp_it;
 	}
diff --git a/src/Graph/dist_map_graph_unit_test.hpp b/src/Graph/dist_map_graph_unit_test.hpp
index 184cb4f8ba4b3fb7a3d177b0c22d7fbb2af52ea2..621079a97c9de38724160cc929c713900975d439 100644
--- a/src/Graph/dist_map_graph_unit_test.hpp
+++ b/src/Graph/dist_map_graph_unit_test.hpp
@@ -58,9 +58,9 @@ struct vx
 
 	template<unsigned int dim, typename Mem> inline vx & operator=(const encapc<dim, vx, Mem> & p)
 	{
-		boost::fusion::at_c<0>(data)[0] = p.template get<0>()[0];
-		boost::fusion::at_c<0>(data)[1] = p.template get<0>()[1];
-		boost::fusion::at_c<0>(data)[2] = p.template get<0>()[2];
+		boost::fusion::at_c<0>(data)[0] = p.get<0>()[0];
+		boost::fusion::at_c<0>(data)[1] = p.get<0>()[1];
+		boost::fusion::at_c<0>(data)[2] = p.get<0>()[2];
 
 		return *this;
 	}
@@ -108,7 +108,7 @@ struct ed
 
 	template<unsigned int dim, typename Mem> inline ed & operator=(const encapc<dim, ed, Mem> & p)
 	{
-		boost::fusion::at_c<0>(data) = p.template get<0>();
+		boost::fusion::at_c<0>(data) = p.get<0>();
 
 		return *this;
 	}
@@ -142,7 +142,7 @@ BOOST_AUTO_TEST_CASE( dist_map_graph_use)
 	DistGraphFactory<2, DistGraph_CSR<vx, ed>> g_factory;
 
 	//! Distributed graph
-	DistGraph_CSR<vx, ed> gd = g_factory.template construct<NO_EDGE, float, 2 - 1, 0, 1, 2>(sz, box);
+	DistGraph_CSR<vx, ed> gd = g_factory.construct<NO_EDGE, float, 2 - 1, 0, 1, 2>(sz, box);
 
 	//! [Request some vertices given global ids]
 
@@ -256,10 +256,10 @@ BOOST_AUTO_TEST_CASE( dist_map_graph_use_redistribution)
 	DistGraphFactory<2, DistGraph_CSR<vx, ed>> g_factory;
 
 	//! Distributed graph
-	DistGraph_CSR<vx, ed> gd = g_factory.template construct<NO_EDGE, float, 2 - 1, 0, 1, 2>(sz, box);
+	DistGraph_CSR<vx, ed> gd = g_factory.construct<NO_EDGE, float, 2 - 1, 0, 1, 2>(sz, box);
 
 	for(size_t i=0; i< gd.getNVertex(); i++)
-	gd.vertex(i).template get<vx::x>()[2] = 0;
+	gd.vertex(i).get<vx::x>()[2] = 0;
 
 	if (vcl.getProcessUnitID() == 0)
 	{
@@ -338,9 +338,9 @@ BOOST_AUTO_TEST_CASE( dist_map_graph_use_free_add)
 	for (size_t i = 0; i < 4; ++i)
 	{
 		vx v;
-		v.template get<vx::x>()[0] = vcl.getProcessUnitID();
-		v.template get<vx::x>()[1] = i;
-		v.template get<vx::x>()[2] = 0;
+		v.get<vx::x>()[0] = vcl.getProcessUnitID();
+		v.get<vx::x>()[1] = i;
+		v.get<vx::x>()[2] = 0;
 		size_t gid = vcl.getProcessUnitID()*4 + i;
 		gd.add_vertex(v, gid);
 	}
diff --git a/src/Vector/vector_dist_MP_unit_tests.hpp b/src/Vector/vector_dist_MP_unit_tests.hpp
index 7d9eff81e52f5cbb5b5e2ad3b1951e69802ffbe0..10e624aefe762d79d2611f2b4c9523fd722ca285 100644
--- a/src/Vector/vector_dist_MP_unit_tests.hpp
+++ b/src/Vector/vector_dist_MP_unit_tests.hpp
@@ -95,7 +95,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_multiphase_cell_list_test )
 	while (it.isNext())
 	{
 		auto p = it.get();
-		auto Np = NN_ver01.template getNNIterator<NO_CHECK>(p.getKey());
+		auto Np = NN_ver01.getNNIterator<NO_CHECK>(p.getKey());
 
 		size_t nn_count = 0;
 
@@ -138,7 +138,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_multiphase_cell_list_test )
 	while (it.isNext())
 	{
 		auto p = it.get();
-		auto Np = NNver0_all.template getNNIterator<NO_CHECK>(p.getKey());
+		auto Np = NNver0_all.getNNIterator<NO_CHECK>(p.getKey());
 
 		size_t nn_cout[4] = {0,0,0,0};
 
@@ -251,7 +251,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_multiphase_cell_list_sym_test )
 	while (it.isNext())
 	{
 		auto p = it.get();
-		auto Np = NN_ver01.template getNNIterator<NO_CHECK>(p.getKey());
+		auto Np = NN_ver01.getNNIterator<NO_CHECK>(p.getKey());
 
 		// For each neighborhood of the particle p
 		while (Np.isNext())
@@ -330,7 +330,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_multiphase_cell_list_sym_test )
 		while (it.isNext())
 		{
 			auto p = it.get();
-			auto Np = NNver_all[i].template getNNIterator<NO_CHECK>(p.getKey());
+			auto Np = NNver_all[i].getNNIterator<NO_CHECK>(p.getKey());
 
 			// For each neighborhood of the particle p
 			while (Np.isNext())
diff --git a/src/Vector/vector_dist_cell_list_tests.hpp b/src/Vector/vector_dist_cell_list_tests.hpp
index 87fdc2838f7da0e9ab01f58deb4ac88933b980e5..fd599b48e9b3b2930b9b3cf828c16d5a726d09ca 100644
--- a/src/Vector/vector_dist_cell_list_tests.hpp
+++ b/src/Vector/vector_dist_cell_list_tests.hpp
@@ -142,8 +142,8 @@ BOOST_AUTO_TEST_CASE( vector_dist_cl_random_vs_hilb_forces_test )
 			// Initialize dist vectors
 			vd_initialize_double<dim>(vd, vd2, v_cl, k_int);
 
-			vd.template ghost_get<0>();
-			vd2.template ghost_get<0>();
+			vd.ghost_get<0>();
+			vd2.ghost_get<0>();
 
 			//Get a cell list
 
@@ -172,7 +172,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_cl_random_vs_hilb_forces_test )
 				vect_dist_key_dx key = it_v2.get();
 
 				for (size_t i = 0; i < dim; i++)
-					avg.get(i) += fabs(vd.template getProp<0>(key)[i]);
+					avg.get(i) += fabs(vd.getProp<0>(key)[i]);
 
 				++count;
 				++it_v2;
@@ -188,8 +188,8 @@ BOOST_AUTO_TEST_CASE( vector_dist_cl_random_vs_hilb_forces_test )
 
 				for (size_t i = 0; i < dim; i++)
 				{
-					auto a1 = vd.template getProp<0>(key)[i];
-					auto a2 = vd2.template getProp<0>(key)[i];
+					auto a1 = vd.getProp<0>(key)[i];
+					auto a2 = vd2.getProp<0>(key)[i];
 
 					//Check that the forces are (almost) equal
 					float per = 0.1;
@@ -297,7 +297,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_cl_random_vs_reorder_forces_test )
 				vect_dist_key_dx key = it_v2.get();
 
 				for (size_t i = 0; i < dim; i++)
-					avg.get(i) += fabs(vd.template getProp<0>(key)[i]);
+					avg.get(i) += fabs(vd.getProp<0>(key)[i]);
 
 				++count;
 				++it_v2;
@@ -315,8 +315,8 @@ BOOST_AUTO_TEST_CASE( vector_dist_cl_random_vs_reorder_forces_test )
 
 				for (size_t i = 0; i < dim; i++)
 				{
-					auto a1 = vd.template getProp<0>(key)[i];
-					auto a2 = vd.template getProp<1>(key)[i];
+					auto a1 = vd.getProp<0>(key)[i];
+					auto a2 = vd.getProp<1>(key)[i];
 
 					//Check that the forces are (almost) equal
 					float per = 0.1;
@@ -463,7 +463,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_symmetric_cell_list )
 
 		Point<3,float> xp = vd.getPos(p);
 
-		auto Np = NN2.template getNNIteratorSym<NO_CHECK>(NN2.getCell(vd.getPos(p)),p.getKey(),vd.getPosVector());
+		auto Np = NN2.getNNIteratorSym<NO_CHECK>(NN2.getCell(vd.getPos(p)),p.getKey(),vd.getPosVector());
 
 		while (Np.isNext())
 		{
@@ -665,7 +665,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_symmetric_verlet_list )
 
 		Point<3,float> xp = vd.getPos(p);
 
-		auto Np = NN2.template getNNIterator<NO_CHECK>(p.getKey());
+		auto Np = NN2.getNNIterator<NO_CHECK>(p.getKey());
 
 		while (Np.isNext())
 		{
diff --git a/src/Vector/vector_dist_unit_test.hpp b/src/Vector/vector_dist_unit_test.hpp
index 07b360353afb58a8d2faced5010b340c070c84b6..8146e4b1ae95a0fc2a42faeaa9f0e616e519cba1 100644
--- a/src/Vector/vector_dist_unit_test.hpp
+++ b/src/Vector/vector_dist_unit_test.hpp
@@ -195,16 +195,16 @@ void Test2D_ghost(Box<2,float> & box)
 		auto key = v_it2.get();
 
 		// fill with the processor ID where these particle live
-		vd.template getProp<p::s>(key) = vd.getPos(key)[0] + vd.getPos(key)[1] * 16;
-		vd.template getProp<p::v>(key)[0] = v_cl.getProcessUnitID();
-		vd.template getProp<p::v>(key)[1] = v_cl.getProcessUnitID();
-		vd.template getProp<p::v>(key)[2] = v_cl.getProcessUnitID();
+		vd.getProp<p::s>(key) = vd.getPos(key)[0] + vd.getPos(key)[1] * 16;
+		vd.getProp<p::v>(key)[0] = v_cl.getProcessUnitID();
+		vd.getProp<p::v>(key)[1] = v_cl.getProcessUnitID();
+		vd.getProp<p::v>(key)[2] = v_cl.getProcessUnitID();
 
 		++v_it2;
 	}
 
 	// do a ghost get
-	vd.template ghost_get<p::s,p::v>();
+	vd.ghost_get<p::s,p::v>();
 
 	//! [Redistribute the particles and sync the ghost properties]
 
@@ -225,7 +225,7 @@ void Test2D_ghost(Box<2,float> & box)
 		auto key = g_it.get();
 
 		// Check the received data
-		BOOST_REQUIRE_EQUAL(vd.getPos(key)[0] + vd.getPos(key)[1] * 16,vd.template getProp<p::s>(key));
+		BOOST_REQUIRE_EQUAL(vd.getPos(key)[0] + vd.getPos(key)[1] * 16,vd.getProp<p::s>(key));
 
 		bool is_in = false;
 		size_t b = 0;
@@ -1661,7 +1661,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost_put )
 				Point<3,float> xp = vd.getPos(p);
 
 				// Get an iterator over the neighborhood particles of p
-				auto Np = NN.template getNNIterator<NO_CHECK>(NN.getCell(vd.getPos(p)));
+				auto Np = NN.getNNIterator<NO_CHECK>(NN.getCell(vd.getPos(p)));
 
 				// For each neighborhood particle ...
 				while (Np.isNext())
@@ -1728,7 +1728,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost_put )
 				Point<3,float> xp = vd.getPos(p);
 
 				// Get an iterator over the neighborhood particles of p
-				auto Np = NN.template getNNIterator<NO_CHECK>(NN.getCell(vd.getPos(p)));
+				auto Np = NN.getNNIterator<NO_CHECK>(NN.getCell(vd.getPos(p)));
 
 				// For each neighborhood particle ...
 				while (Np.isNext())
diff --git a/src/dec_optimizer_unit_test.hpp b/src/dec_optimizer_unit_test.hpp
index 0d0d05b70e85e54e00c2419d706eb13a36579ef9..28b387a5868a9f03c9c849a2164caed7db94ed4f 100644
--- a/src/dec_optimizer_unit_test.hpp
+++ b/src/dec_optimizer_unit_test.hpp
@@ -96,8 +96,8 @@ BOOST_AUTO_TEST_CASE( dec_optimizer_test_use_p)
 				size_t id = 4*p[2] + 2*p[1] + p[0];
 
 				grid_key_dx<3> key(i,j,k);
-				gp.vertex(gs.LinId(key)).template get<nm_part_v::id>() = id;
-				g.vertex(gs.LinId(key)).template get<nm_v::id>() = id;
+				gp.vertex(gs.LinId(key)).get<nm_part_v::id>() = id;
+				g.vertex(gs.LinId(key)).get<nm_v::id>() = id;
 			}
 		}
 	}
@@ -163,8 +163,8 @@ BOOST_AUTO_TEST_CASE( dec_optimizer_disconnected_subdomains_np)
 	{
 		auto vk = vit.get();
 
-		g.template vertex_p<nm_v::proc_id>(vk) = rng.GetUniform() * 2.9999;
-		g.template vertex_p<nm_v::sub_id>(vk) = 100;
+		g.vertex_p<nm_v::proc_id>(vk) = rng.GetUniform() * 2.9999;
+		g.vertex_p<nm_v::sub_id>(vk) = 100;
 
 		++vit;
 	}