Commit 9efb55ac by Paolo Carlini Committed by Paolo Carlini

re PR c++/71368 ([concepts] ICE on constrained compound requirement)

2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71368
	* g++.dg/concepts/pr71368.C: New.

From-SVN: r253826
parent 8240d003
2017-10-17 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71368
* g++.dg/concepts/pr71368.C: New.
2017-10-17 Nathan Sidwell <nathan@acm.org>
PR c++/82560
......
// { dg-options "-std=c++17 -fconcepts" }
struct inner;
template<typename X> concept bool CompoundReq = requires {
// fine with concrete type in trailing type, i.e. inner& instead of X&
{ X::inner_member() } -> X&;
};
template<typename X> concept bool Concept = requires {
{ X::outer_member() } -> CompoundReq;
};
struct inner { static inner& inner_member(); };
struct outer { static inner outer_member(); };
int main()
{
// fine
static_assert( CompoundReq<inner> );
static_assert( CompoundReq<decltype( outer::outer_member() )> );
// ICE
static_assert( Concept<outer> );
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment