Opened 10 years ago
Last modified 10 years ago
#7934 new Bugs
tuples::element returns wrong typesss for bolatile tuples
Reported by: | Owned by: | Joel de Guzman | |
---|---|---|---|
Milestone: | To Be Determined | Component: | tuple |
Version: | Boost 1.52.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Hi,
according to c++11, volatile tuples should return volatile elements. I think, boost tuple should behave similarly, however it doesn't.
Below is an example with two tests, one test for boost tuple and one for standard tuple. The boost tuple test fails.
// file a.cpp #define BOOST_TEST_MODULE example #include <boost/test/included/unit_test.hpp> #include <boost/type_traits.hpp> #include <boost/tuple/tuple.hpp> #include <tuple> BOOST_AUTO_TEST_CASE( boost_tuple ) { using boost::is_same; using boost::tuple; using boost::tuples::element; typedef element<0, volatile tuple<int> > VElement; typedef element<0, const volatile tuple<int> > CVElement; BOOST_CHECK((is_same<typename VElement::type, volatile int>::value)); BOOST_CHECK((is_same<typename CVElement::type, const volatile int>::value)); } BOOST_AUTO_TEST_CASE( std_tuple ) { using boost::is_same; using std::tuple; using std::tuple_element; typedef tuple_element<0, volatile tuple<int> > VElement; typedef tuple_element<0, const volatile tuple<int> > CVElement; BOOST_CHECK((is_same<typename VElement::type, volatile int>::value)); BOOST_CHECK((is_same<typename CVElement::type, const volatile int>::value)); }
ptomulik@barakus$ g++ -ansi -std=c++11 -Werror -Wall -Wextra -pedantic a.cpp ptomulik@barakus$ ./a.out Running 2 test cases... a.cpp(15): error in "boost_tuple": check (is_same<typename VElement::type, volatile int>::value) failed a.cpp(16): error in "boost_tuple": check (is_same<typename CVElement::type, const volatile int>::value) failed *** 2 failures detected in test suite "example"
my gcc version
ptomulik@barakus:$ g++ --version g++ (Debian 4.7.2-5) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Note:
See TracTickets
for help on using tickets.
I am not really the maintainer of Boost Tuple so I can't do anything about it. I can, however, make sure that Fusion gets this correctly.