Boost logo

Boost :

Subject: Re: [boost] [Boost-users] [1.50.0] Boost release 1.50.0 available
From: Sergiu Dotenco (sergiu.dotenco_at_[hidden])
Date: 2012-06-29 15:15:00


On 6/29/2012 7:51 PM, Eric Niebler wrote:
> On 6/29/2012 5:36 AM, Sergiu Dotenco wrote:
>> Boost.Foreach causes compilation errors when using Microsoft Visual
>> Studio 10. The issue can be resolved by adding
>>
>> #include <boost/utility/enable_if.hpp>
>>
>> to boost/for_each.hpp.
>
> I'm not seeing that. The following program compiles cleanly for me on VC10.
>
> #include <boost/foreach.hpp>
> int main() {}
>
> The only place enable_if is used in foreach.hpp is conditionally guarded
> by a macro, and #include <boost/utility/enable_if.hpp> is conditionally
> guarded by the same macro.
>
> Can you send a minimal program that demonstrates the error?
>

My apologies, Eric. The compilation errors are not caused by
Boost.Foreach. I should have been more careful while summarizing the
issue details. The problem seems to be in
boost/range/algorithm/for_each.hpp. If I try to compile the following
snippet using VC10,

#include <boost/range/algorithm/for_each.hpp>

void foo(int)
{
}

int main()
{
    int a[] = { 1, 2, 3 };
    boost::for_each(a, foo);
}

the compiler outputs

boost_1_50_0\boost\range\algorithm\for_each.hpp(34): error C2143: syntax
error : missing ',' before '<'
boost_1_50_0\boost\range\algorithm\for_each.hpp(34): error C4430:
missing type specifier - int assumed. Note: C++ does not support default-int
boost_1_50_0\boost\range\algorithm\for_each.hpp(52): error C2143: syntax
error : missing ',' before '<'
boost_1_50_0\boost\range\algorithm\for_each.hpp(52): error C4430:
missing type specifier - int assumed. Note: C++ does not support default-int
boost_1_50_0\boost\range\algorithm\for_each.hpp(58): error C2995:
'UnaryFunction
boost::range::for_each_detail::for_each_impl(Iterator,Iterator,UnaryFunction,int)'
: function template has already been defined
boost_1_50_0\boost\range\algorithm\for_each.hpp(33) : see declaration of
'boost::range::for_each_detail::for_each_impl'

due to the missing

#include <boost/utility/enable_if.hpp>

in boost/range/algorithm/for_each.hpp.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk