title: Boost error, trouble compiling xtime.hpp
body: <p>I've been working on a C++ project using Boost, and between compiles, I must have upgraded something in boost without meaning to or something, because now Boost dependencies won't compile:</p>
  
  <pre><code>In file included from /usr/include/boost/thread/pthread/mutex.hpp:14:0,
                   from /usr/include/boost/thread/mutex.hpp:16,
                   from /usr/include/boost/thread/pthread/thread_data.hpp:12,
                   from /usr/include/boost/thread/thread.hpp:17,
                   from /usr/include/boost/thread.hpp:13,
                   from /blah.h:4,
                   from bluh.h:3,
                   from bleh/main.cpp:4:
  /usr/include/boost/thread/xtime.hpp:23:5: error: expected identifier before numeric constant
  /usr/include/boost/thread/xtime.hpp:23:5: error: expected '}' before numeric constant
  /usr/include/boost/thread/xtime.hpp:23:5: error: expected unqualified-id before numeric constant
  /usr/include/boost/thread/xtime.hpp:46:14: error: expected type-specifier before 'system_time'
  In file included from /usr/include/boost/thread/pthread/mutex.hpp:14:0,
                   from /usr/include/boost/thread/mutex.hpp:16,
                   from /usr/include/boost/thread/pthread/thread_data.hpp:12,
                   from /usr/include/boost/thread/thread.hpp:17,
                   from /usr/include/boost/thread.hpp:13,
                   from /blah,
                   from /bleh,(changed these names, obviously)
                   from /bluh /main.cpp:4:
  /usr/include/boost/thread/xtime.hpp: In function 'int xtime_get(xtime*, int)':
  /usr/include/boost/thread/xtime.hpp:73:40: error: 'get_system_time' was not declared in this scope
  /usr/include/boost/thread/xtime.hpp:73:40: note: suggested alternative:
  /usr/include/boost/thread/thread_time.hpp:19:24: note:   'boost::get_system_time'
  /usr/include/boost/thread/xtime.hpp: At global scope:
  /usr/include/boost/thread/xtime.hpp:88:1: error: expected declaration before '}' token
  make[2]: *** [CMakeFiles/edge_based_tracker.dir/main.o] Error 1
  make[1]: *** [CMakeFiles/edge_based_tracker.dir/all] Error 2
  make: *** [all] Error 2
  </code></pre>
  
  <p>Any ideas?  I tried changing TIME_UTC to TIME_UTC_ as this was recommended to me on another site, but that didn't seem to help.</p>
  
  <p>EDIT: The Boost Version is Version: 1.48.0.2.  I've attached xtime below:</p>
  
  <pre><code>// Copyright (C) 2001-2003
  // William E. Kempf
  // Copyright (C) 2007-8 Anthony Williams
  //
  //  Distributed under the Boost Software License, Version 1.0. (See accompanying 
  //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  
  #ifndef BOOST_XTIME_WEK070601_HPP
  #define BOOST_XTIME_WEK070601_HPP
  
  #include &lt;boost/thread/detail/config.hpp&gt;
  
  #include &lt;boost/cstdint.hpp&gt;
  #include &lt;boost/thread/thread_time.hpp&gt;
  #include &lt;boost/date_time/posix_time/conversion.hpp&gt;
  
  #include &lt;boost/config/abi_prefix.hpp&gt;
  
  namespace boost {
  
  enum xtime_clock_types
  {
      TIME_UTC=1 //LINE 23
  //    TIME_TAI,
  //    TIME_MONOTONIC,
  //    TIME_PROCESS,
  //    TIME_THREAD,
  //    TIME_LOCAL,
  //    TIME_SYNC,
  //    TIME_RESOLUTION
  };
  
  struct xtime
  {
  #if defined(BOOST_NO_INT64_T)
      typedef int_fast32_t xtime_sec_t; //INT_FAST32_MIN &lt;= sec &lt;= INT_FAST32_MAX
  #else
      typedef int_fast64_t xtime_sec_t; //INT_FAST64_MIN &lt;= sec &lt;= INT_FAST64_MAX
  #endif
  
      typedef int_fast32_t xtime_nsec_t; //0 &lt;= xtime.nsec &lt; NANOSECONDS_PER_SECOND
  
      xtime_sec_t sec;
      xtime_nsec_t nsec;
  
      operator system_time() const
      {
          return boost::posix_time::from_time_t(0)+
              boost::posix_time::seconds(static_cast&lt;long&gt;(sec))+
  #ifdef BOOST_DATE_TIME_HAS_NANOSECONDS
              boost::posix_time::nanoseconds(nsec);
  #else
          boost::posix_time::microseconds((nsec+500)/1000);
  #endif
      }
  
  };
  
  inline xtime get_xtime(boost::system_time const&amp; abs_time)
  {
      xtime res;
      boost::posix_time::time_duration const time_since_epoch=abs_time-boost::posix_time::from_time_t(0);
  
      res.sec=static_cast&lt;xtime::xtime_sec_t&gt;(time_since_epoch.total_seconds());
      res.nsec=static_cast&lt;xtime::xtime_nsec_t&gt;(time_since_epoch.fractional_seconds()*(1000000000/time_since_epoch.ticks_per_second()));
      return res;
  }
  
  inline int xtime_get(struct xtime* xtp, int clock_type)
  {
      if (clock_type == TIME_UTC)
      {
          *xtp=get_xtime(get_system_time());
          return clock_type;
      }
      return 0;
  }
  
  
  inline int xtime_cmp(const xtime&amp; xt1, const xtime&amp; xt2)
  {
      if (xt1.sec == xt2.sec)
          return (int)(xt1.nsec - xt2.nsec);
      else 
          return (xt1.sec &gt; xt2.sec) ? 1 : -1;
  }
  
  } // namespace boost
  
  #include &lt;boost/config/abi_suffix.hpp&gt;
  
  #endif //BOOST_XTIME_WEK070601_HPP
  </code></pre>
  
  <p>EDIT: To make it clear, the code is failing on an import of boost/thread.hpp</p>