build: require gcc >= 5.3, boost >= 1.58, openssl >= 1.0.2

This effectively drops support for all versions of Ubuntu older than 16.04

Change-Id: Ie3ab7df9147e97f6467658a6399a4f9379f089c1
Refs: #4462
diff --git a/src/encoding/block.cpp b/src/encoding/block.cpp
index 2113064..ed8f5c9 100644
--- a/src/encoding/block.cpp
+++ b/src/encoding/block.cpp
@@ -34,15 +34,10 @@
 namespace ndn {
 
 BOOST_CONCEPT_ASSERT((boost::EqualityComparable<Block>));
-#if NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
 static_assert(std::is_nothrow_move_constructible<Block>::value,
               "Block must be MoveConstructible with noexcept");
-#endif // NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
-
-#if NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE
 static_assert(std::is_nothrow_move_assignable<Block>::value,
               "Block must be MoveAssignable with noexcept");
-#endif // NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE
 
 const size_t MAX_SIZE_OF_BLOCK_FROM_STREAM = MAX_NDN_PACKET_SIZE;
 
@@ -454,30 +449,14 @@
 Block::erase(Block::element_const_iterator position)
 {
   resetWire();
-
-#ifdef NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR
   return m_elements.erase(position);
-#else
-  element_iterator it = m_elements.begin();
-  std::advance(it, std::distance(m_elements.cbegin(), position));
-  return m_elements.erase(it);
-#endif
 }
 
 Block::element_iterator
 Block::erase(Block::element_const_iterator first, Block::element_const_iterator last)
 {
   resetWire();
-
-#ifdef NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR
   return m_elements.erase(first, last);
-#else
-  element_iterator itStart = m_elements.begin();
-  element_iterator itEnd = m_elements.begin();
-  std::advance(itStart, std::distance(m_elements.cbegin(), first));
-  std::advance(itEnd, std::distance(m_elements.cbegin(), last));
-  return m_elements.erase(itStart, itEnd);
-#endif
 }
 
 void
@@ -491,14 +470,7 @@
 Block::insert(Block::element_const_iterator pos, const Block& element)
 {
   resetWire();
-
-#ifdef NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR
   return m_elements.insert(pos, element);
-#else
-  element_iterator it = m_elements.begin();
-  std::advance(it, std::distance(m_elements.cbegin(), pos));
-  return m_elements.insert(it, element);
-#endif
 }
 
 // ---- misc ----
diff --git a/src/encoding/buffer.cpp b/src/encoding/buffer.cpp
index ce4c880..531e9fa 100644
--- a/src/encoding/buffer.cpp
+++ b/src/encoding/buffer.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2017 Regents of the University of California.
+ * Copyright (c) 2013-2018 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -25,15 +25,10 @@
 
 namespace ndn {
 
-#if NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
 static_assert(std::is_nothrow_move_constructible<Buffer>::value,
               "Buffer must be MoveConstructible with noexcept");
-#endif // NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE
-
-#if NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE
 static_assert(std::is_nothrow_move_assignable<Buffer>::value,
               "Buffer must be MoveAssignable with noexcept");
-#endif // NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE
 
 Buffer::Buffer() = default;