Opened 9 years ago

Closed 9 years ago

#9249 closed Bugs (fixed)

BOOST_MPL_ASSERT is broken in VC12 (VC++2013RC)

Reported by: abyx@… Owned by: Aleksey Gurtovoy
Milestone: To Be Determined Component: mpl
Version: Boost 1.55.0 Severity: Problem
Keywords: Cc:

Description

Code:

#include <boost/mpl/assert.hpp>

struct true_type {
    static const bool value = true;
};

struct pred {
    typedef true_type type;
};

static_assert(pred::type::value == true, ""); // ok
BOOST_MPL_ASSERT((pred)); // error (line #12)

Compiler output:

> cl /It:\_lib\boost\1_55_0b1 Source.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.20827.3 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

Source.cpp
t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(149) : error C2143: syntax error : missing ';' before '<'
        t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(153) : see reference to class template instantiation 'boost::mpl::eval_assert<Pred>' being compiled
t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(149) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(152) : error C2238: unexpected token(s) preceding ';'
t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(159) : error C2143: syntax error : missing ';' before '<'
        t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(163) : see reference to class template instantiation 'boost::mpl::eval_assert_not<Pred>' being compiled
t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(159) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
t:\_lib\boost\1_55_0b1\boost/mpl/assert.hpp(162) : error C2238: unexpected token(s) preceding ';'
Source.cpp(12) : error C2039: 'assert_arg' : is not a member of 'boost::mpl'
Source.cpp(12) : error C3861: 'assert_arg': identifier not found

Change History (3)

comment:1 by abyx@…, 9 years ago

Well, it seems it was already fixed in trunk.
Sorry for false alert.

comment:2 by raad@…, 9 years ago

It was fixed in r84443 in May, but that won't make any release compatible with VS2013. Can someone please merge that revision to the release branch?

comment:3 by Daniel James, 9 years ago

Resolution: fixed
Status: newclosed

This was eventually merged in r86514.

Note: See TracTickets for help on using tickets.