Index: boost/thread/future.hpp =================================================================== --- boost/thread/future.hpp (revision 78094) +++ boost/thread/future.hpp (working copy) @@ -1120,11 +1120,30 @@ void lazy_init() { #if defined BOOST_THREAD_PROMISE_LAZY + +#if defined(BOOST_INTEL) + +#pragma push_macro("atomic_load") +#undef atomic_load + +#pragma push_macro("atomic_compare_exchange") +#undef atomic_compare_exchange + +#endif // #if defined(BOOST_INTEL) + if(!atomic_load(&future_)) { future_ptr blank; atomic_compare_exchange(&future_,&blank,future_ptr(new detail::future_object)); } + +#if defined(BOOST_INTEL) + +#pragma pop_macro("atomic_load") +#pragma pop_macro("atomic_compare_exchange") + +#endif // #if defined(BOOST_INTEL) + #endif } @@ -1279,11 +1298,30 @@ void lazy_init() { #if defined BOOST_THREAD_PROMISE_LAZY + +#if defined(BOOST_INTEL) + +#pragma push_macro("atomic_load") +#undef atomic_load + +#pragma push_macro("atomic_compare_exchange") +#undef atomic_compare_exchange + +#endif // #if defined(BOOST_INTEL) + if(!atomic_load(&future_)) { future_ptr blank; atomic_compare_exchange(&future_,&blank,future_ptr(new detail::future_object)); } + +#if defined(BOOST_INTEL) + +#pragma pop_macro("atomic_load") +#pragma pop_macro("atomic_compare_exchange") + +#endif // #if defined(BOOST_INTEL) + #endif } public: