Hello,
On Mon, Mar 12, 2018 at 12:16 PM, John Maddock via Boost
wrote:
On 12/03/2018 19:07, Lorenzo Caminiti via Boost wrote:
I noticed the following failure in Boost.TypeTraits regression tests
on GCC 4.6 C++11. Any idea why this is failing?>
There's something different about that tester - there are several gcc-4.6
test runners in the matrix and they're all passing
is_list_constructible_test bar that one. What/why the difference is there I
have no idea :(
I don't think the error is limited to that tester.
I get the same Boost.TypeTraits error in 2 Boost.Contract tests on
that compiler/plaform. All these tests do is to #include
. For example, for one of them:
Test output: igaztanaga-master-gcc-4.6c++11 - contract - old-auto / gcc-4.6c+
Rev cb62bbf20f4a0000ee6f16835b0c2dc92edea8cd / Sun, 11 Mar 2018 03:16:04 +0000
Compile [2018-03-11 09:51:14 UTC]: fail
"C:/Programs/mingw-builds/x32-4.6.4-posix-dwarf-rev0/mingw32/bin/gcc-4.6.bat"
-pipe -fmax-errors=1 -std=c++0x -m32 -O0 -fno-inline -Wall
-march=i686 -DBOOST_ALL_NO_LIB=1 -DBOOST_CONTRACT_DISABLE_THREADS
-DBOOST_CONTRACT_DYN_LINK -DBOOST_SYSTEM_DYN_LINK=1 -I".."
-I"..\libs\contract\test\old" -c -o
"c:\boost\master\results\boost\bin.v2\libs\contract\test\old-auto.test\gcc-4.6c+\dbg\dbg-symbl-off\old\auto.o"
"..\libs\contract\test\old\auto.cpp"
In file included from ../boost/type_traits.hpp:110:0,
from ..\libs\contract\test\old\auto.cpp:11:
../boost/type_traits/is_list_constructible.hpp:36:61: error: expected
class-name before 'decltype'
compilation terminated due to -fmax-errors=1.
Where auto.cpp (note auto.cpp:11 is the #include line):
// Copyright (C) 2008-2018 Lorenzo Caminiti
// Distributed under the Boost Software License, Version 1.0 (see accompanying
// file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
// See: http://www.boost.org/doc/libs/release/libs/contract/doc/html/index.html
// Test that OLD macro allows to use C++11 auto declarations.
#include
#include
#include // ** line 11 **
#include
#include
int main() {
int x = -123;
auto old_x = BOOST_CONTRACT_OLDOF(x);
x = 123;
BOOST_STATIC_ASSERT((boost::is_same::value));
#ifndef BOOST_CONTRACT_NO_OLDS
BOOST_TEST_EQ(*old_x, -123);
#endif
BOOST_TEST_EQ(x, 123);
boost::contract::virtual_* v = 0;
char y = 'j';
auto old_y = BOOST_CONTRACT_OLDOF(v, y);
y = 'k';
BOOST_STATIC_ASSERT((boost::is_same::value));
#ifndef BOOST_CONTRACT_NO_OLDS
BOOST_TEST_EQ(*old_y, 'j');
#endif
BOOST_TEST_EQ(y, 'k');
return boost::report_errors();
}
Thanks,
--Lorenzo