From b7ecbd55d6592eceac7e5e1c53f041fda320db0d Mon Sep 17 00:00:00 2001
From: Martyn Gigg <martyn.gigg@stfc.ac.uk>
Date: Wed, 20 Aug 2014 11:42:02 +0100
Subject: [PATCH] Fix ambiguous overload error with boost 1.53

Refs #9349
---
 .../Framework/Algorithms/src/CalculateTransmission.cpp   | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/Code/Mantid/Framework/Algorithms/src/CalculateTransmission.cpp b/Code/Mantid/Framework/Algorithms/src/CalculateTransmission.cpp
index ae463d57def..6f35de92151 100644
--- a/Code/Mantid/Framework/Algorithms/src/CalculateTransmission.cpp
+++ b/Code/Mantid/Framework/Algorithms/src/CalculateTransmission.cpp
@@ -233,9 +233,16 @@ API::MatrixWorkspace_sptr CalculateTransmission::extractSpectra(API::MatrixWorks
 {
   // Compile a comma separated list of indices that we can pass to SumSpectra.
   std::vector<std::string> indexStrings(indices.size());
+  // A bug in boost 1.53: https://svn.boost.org/trac/boost/ticket/7421
+  // means that lexical_cast cannot be used directly as the call is ambiguous
+  // so we need to define a function pointer that can resolve the overloaded
+  // lexical_cast function
+  typedef std::string (*from_size_t)(const size_t &);
+
   std::transform(
     indices.begin(), indices.end(),
-    indexStrings.begin(), boost::lexical_cast<std::string, size_t>);
+    indexStrings.begin(), 
+    (from_size_t)boost::lexical_cast<std::string, size_t>);
   const std::string commaIndexList = boost::algorithm::join(indexStrings, ",");
 
   double start = m_done;
-- 
GitLab