diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2022-01-25 21:29:31 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2022-02-02 16:30:51 +0000 |
commit | b229c5186093fa6603030ae83d5fe640ef7051a4 (patch) | |
tree | 5a439dfa81066020a836bb651ff046df7a0b9d61 | |
parent | 9a92e46c0e9a75cd14125493b8826d3e33dd0f67 (diff) | |
download | gcc-b229c5186093fa6603030ae83d5fe640ef7051a4.zip gcc-b229c5186093fa6603030ae83d5fe640ef7051a4.tar.gz gcc-b229c5186093fa6603030ae83d5fe640ef7051a4.tar.bz2 |
libstdc++: Fix link failure in _OutputIteratorConcept
The C++98-style concept check for output iterators causes a link
failure on mingw-w64, because the __val() member function isn't defined.
Change it to use a function pointer instead. That pointer is never set
to anything meaningful, but it doesn't matter as the __constraints()
function only has to be instantiated, it's never called.
We could refactor all of these to use unevaluated contexts (e.g. sizeof
of __decltype) so that we only check the expressions are well-formed,
without any codegen at all. Any improvements to these are very low
priority though.
libstdc++-v3/ChangeLog:
* include/bits/boost_concept_check.h (_OutputIteratorConcept):
Change member function to data member of function pointer type.
-rw-r--r-- | libstdc++-v3/include/bits/boost_concept_check.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libstdc++-v3/include/bits/boost_concept_check.h b/libstdc++-v3/include/bits/boost_concept_check.h index 23dba06..3d884eb 100644 --- a/libstdc++-v3/include/bits/boost_concept_check.h +++ b/libstdc++-v3/include/bits/boost_concept_check.h @@ -483,7 +483,9 @@ struct _Aux_require_same<_Tp,_Tp> { typedef _Tp _Type; }; *__i++ = __val(); // require postincrement and assignment } _Tp __i; - _ValueT __val() const; + // Use a function pointer here so no definition of the function needed. + // Just need something that returns a _ValueT (which might be a reference). + _ValueT (*__val)(); }; template<typename _Tp> |