[Bug c++/71217] New: [concepts] Incorrect recursive concept evaluation
sergstrukovlink at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat May 21 01:34:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71217
Bug ID: 71217
Summary: [concepts] Incorrect recursive concept evaluation
Product: gcc
Version: 6.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: sergstrukovlink at gmail dot com
Target Milestone: ---
Created attachment 38538
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38538&action=edit
the sample program
The attached file contains a sample program to show the problem.
/* struct Fold<TT> */
template <class ... TT> struct Fold;
/* concept TestInt<T> */
template <class T>
struct IntFoldCtor
{
enum RetType { Ret = false };
};
template <class T>
concept bool TestInt = (bool)IntFoldCtor<T>::Ret || is_same<T,int>::value ;
template <TestInt ... TT>
struct IntFoldCtor<Fold<TT...> >
{
enum RetType { Ret = true };
};
TestInt< Fold<int,Fold<int,int>,int> > is evaluated (incorrectly) as false.
Here is a link to forum discussion of the problem
https://groups.google.com/a/isocpp.org/forum/#!topic/concepts/k-PFfgLloXI
More information about the Gcc-bugs
mailing list