================
@@ -28,10 +28,19 @@ namespace clang {
 
 class ConceptDecl;
 class TemplateDecl;
+class ConceptReference;
 class Expr;
 class NamedDecl;
 struct PrintingPolicy;
 
+/// Pairs of unsatisfied atomic constraint expressions along with the
+/// substituted constraint expr, if the template arguments could be
+/// substituted into them, or a diagnostic if substitution resulted in
+/// an invalid expression.
+using UnsatisfiedConstraintRecord =
+    llvm::PointerUnion<const Expr *, const ConceptReference *,
+                       std::pair<SourceLocation, StringRef> *>;
----------------
erichkeane wrote:

I guess that is better.  Would be nice if each had a name/it was its own 
`union` type (I actually missed with the old one that it was 
union-of-three-struct-pointers and not struct with 
union-of-two-struct-pointers-plus-struct(pair).

Would be nice if we didn't have to store this as well, only thing we could 
really do is change the StringRef to be a handful of enums that would let us 
re-create it, but not sure how that would be much/any better.

https://github.com/llvm/llvm-project/pull/141776
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to