diff --git a/MeshLib/Elements/PointRule1.cpp b/MeshLib/Elements/PointRule1.cpp
index 8a952320f8f77c4c8d50f6e45143832b727b0a8f..c5f2bb68edaa72c11bfb2bf6beeee130ae5002f4 100644
--- a/MeshLib/Elements/PointRule1.cpp
+++ b/MeshLib/Elements/PointRule1.cpp
@@ -19,7 +19,7 @@ const unsigned PointRule1::edge_nodes[1][1] =
 	{0}
 };
 
-double PointRule1::computeVolume(Node const* const* _nodes)
+double PointRule1::computeVolume(Node const* const* /*_nodes*/)
 {
 	return 0;
 }
diff --git a/MeshLib/Elements/TemplateElement-impl.h b/MeshLib/Elements/TemplateElement-impl.h
index 7c9f88b5d57ad076db08f29300cc4adf6c95038c..cba91a51bb326b423673efeec0c369ee5ed735e3 100644
--- a/MeshLib/Elements/TemplateElement-impl.h
+++ b/MeshLib/Elements/TemplateElement-impl.h
@@ -46,13 +46,35 @@ TemplateElement<ELEMENT_RULE>::TemplateElement(const TemplateElement &e)
 	this->_content = e.getContent();
 }
 
+
+namespace detail
+{
+
+template<unsigned N>
+bool isEdge(unsigned const (&edge_nodes)[N], unsigned idx1, unsigned idx2)
+{
+
+	if (edge_nodes[0]==idx1 && edge_nodes[1]==idx2) return true;
+	if (edge_nodes[1]==idx1 && edge_nodes[0]==idx2) return true;
+
+	return false;
+}
+
+inline bool
+isEdge(unsigned const (&/*edge_nodes*/)[1], unsigned /*idx1*/, unsigned /*idx2*/)
+{
+	return false;
+}
+
+} // namespace detail
+
+
 template <class ELEMENT_RULE>
 bool TemplateElement<ELEMENT_RULE>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<getNEdges(); i++)
 	{
-		if (ELEMENT_RULE::edge_nodes[i][0]==idx1 && ELEMENT_RULE::edge_nodes[i][1]==idx2) return true;
-		if (ELEMENT_RULE::edge_nodes[i][1]==idx1 && ELEMENT_RULE::edge_nodes[i][0]==idx2) return true;
+		if (detail::isEdge(ELEMENT_RULE::edge_nodes[i], idx1, idx2)) return true;
 	}
 	return false;
 }