Author: marshall
Date: Tue Feb 25 19:56:31 2014
New Revision: 202214
URL: http://llvm.org/viewvc/llvm-project?rev=202214&view=rev
Log:
Implement LWG issue 2306: match_results::reference should be value_type&, not
const value_type&. This is a general move by the LWG to have the reference type
of read-only containers be a non-const reference; however, there are no methods
that return a non-const reference to a match_result entry, so there's no
worries about getting a non-const reference to a constant object.
Modified:
libcxx/trunk/include/regex
libcxx/trunk/test/re/re.results/types.pass.cpp
libcxx/trunk/www/cxx1y_status.html
Modified: libcxx/trunk/include/regex
URL:
http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/regex?rev=202214&r1=202213&r2=202214&view=diff
==============================================================================
--- libcxx/trunk/include/regex (original)
+++ libcxx/trunk/include/regex Tue Feb 25 19:56:31 2014
@@ -437,7 +437,7 @@ class match_results
public:
typedef sub_match<BidirectionalIterator> value_type;
typedef const value_type& const_reference;
- typedef const_reference reference;
+ typedef value_type& reference;
typedef /implementation-defined/ const_iterator;
typedef const_iterator iterator;
typedef typename iterator_traits<BidirectionalIterator>::difference_type
difference_type;
@@ -5263,7 +5263,7 @@ private:
public:
_BidirectionalIterator __position_start_;
typedef const value_type& const_reference;
- typedef const_reference reference;
+ typedef value_type& reference;
typedef typename __container_type::const_iterator const_iterator;
typedef const_iterator iterator;
typedef typename iterator_traits<_BidirectionalIterator>::difference_type
difference_type;
Modified: libcxx/trunk/test/re/re.results/types.pass.cpp
URL:
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/re/re.results/types.pass.cpp?rev=202214&r1=202213&r2=202214&view=diff
==============================================================================
--- libcxx/trunk/test/re/re.results/types.pass.cpp (original)
+++ libcxx/trunk/test/re/re.results/types.pass.cpp Tue Feb 25 19:56:31 2014
@@ -35,7 +35,7 @@ test()
typedef std::match_results<CharT*> MR;
static_assert((std::is_same<typename MR::value_type,
std::sub_match<CharT*> >::value), "");
static_assert((std::is_same<typename MR::const_reference, const
std::sub_match<CharT*>& >::value), "");
- static_assert((std::is_same<typename MR::reference, const
std::sub_match<CharT*>& >::value), "");
+ static_assert((std::is_same<typename MR::reference,
std::sub_match<CharT*>& >::value), "");
static_assert((!std::is_same<typename MR::const_iterator, void>::value),
"");
static_assert((std::is_same<typename MR::difference_type,
std::ptrdiff_t>::value), "");
static_assert((std::is_same<typename MR::size_type, std::size_t>::value),
"");
Modified: libcxx/trunk/www/cxx1y_status.html
URL:
http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/cxx1y_status.html?rev=202214&r1=202213&r2=202214&view=diff
==============================================================================
--- libcxx/trunk/www/cxx1y_status.html (original)
+++ libcxx/trunk/www/cxx1y_status.html Tue Feb 25 19:56:31 2014
@@ -242,7 +242,7 @@
<tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2293">2293</a></td><td>Wrong
facet used by num_put::do_put</td><td>Issaquah</td><td>Complete</td></tr>
<tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2301">2301</a></td><td>Why
is std::tie not constexpr?</td><td>Issaquah</td><td>Complete</td></tr>
<tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2304">2304</a></td><td>Complexity
of count in unordered associative
containers</td><td>Issaquah</td><td>Complete</td></tr>
- <tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2306">2306</a></td><td>match_results::reference
should be value_type&, not const
value_type&</td><td>Issaquah</td><td></td></tr>
+ <tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2306">2306</a></td><td>match_results::reference
should be value_type&, not const
value_type&</td><td>Issaquah</td><td>Complete</td></tr>
<tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2308">2308</a></td><td>Clarify
container destructor requirements w.r.t.
std::array</td><td>Issaquah</td><td>Complete</td></tr>
<tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2313">2313</a></td><td>tuple_size
should always derive from integral_constant<size_t,
N></td><td>Issaquah</td><td>Complete</td></tr>
<tr><td><a
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2314">2314</a></td><td>apply()
should return decltype(auto) and use decay_t before
tuple_size</td><td>Issaquah</td><td></td></tr>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits