https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83345
Bug ID: 83345
Summary: c++1z produces an infinite recursion (c++1y works
fine).
Product: gcc
Version: 7.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pawel_sikora at zoho dot com
Target Milestone: ---
% g++ bug.cpp -std=c++1y -Wall -Wextra && ./a.out; echo $?
0
% g++ bug.cpp -std=c++1z -Wall -Wextra && ./a.out; echo $?
zsh: segmentation fault (core dumped) ./a.out
139
% cat bug.cpp
struct NullType {};
struct ICondition
{
virtual ~ICondition() {}
};
template < class Arg1 = NullType >
struct ConditionRefProxy
{
ConditionRefProxy( const ICondition& ) {}
};
template < class Arg1 = NullType >
struct AndGroup : ICondition
{
typedef ConditionRefProxy< Arg1 > ref_proxy_t;
operator ref_proxy_t( void )
{
return ref_proxy_t( *this );
}
};
int main()
{
typedef AndGroup< NullType > A;
A a;
a.operator A::ref_proxy_t();
}