[llvm-bugs] [Bug 47414] New: Premature substitution into constraints
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Thu Sep  3 17:02:54 PDT 2020
    
    
  
https://bugs.llvm.org/show_bug.cgi?id=47414
            Bug ID: 47414
           Summary: Premature substitution into constraints
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++2a
          Assignee: unassignedclangbugs at nondot.org
          Reporter: Casey at Carter.net
                CC: blitzrakete at gmail.com, erik.pilkington at gmail.com,
                    llvm-bugs at lists.llvm.org, richard-llvm at metafoo.co.uk
Compiling this program:
    template <class, class> constexpr bool is_same_v = false;
    template <class T> constexpr bool is_same_v<T, T> = true;
    template <class T> concept C = is_same_v<T, void>;
    template <class T> requires C<T> using alias = T;
    template <class T> struct S {
        void f() requires C<T> && is_same_v<alias<T>, void> {}
    };
    int main() { S<int>{}; }
with "clang++ -std=c++2a" diagnoses (https://godbolt.org/z/qhhec8):
    <source>:9:41: error: constraints not satisfied for alias template 'alias'
[with T = int]
        void f() requires C<T> && is_same_v<alias<T>, void> {}
                                            ^~~~~~~~
    <source>:12:14: note: in instantiation of template class 'S<int>' requested
here
    int main() { S<int>{}; }
                 ^
    <source>:6:29: note: because 'int' does not satisfy 'C'
    template <class T> requires C<T> using alias = T;
                                ^
    <source>:4:32: note: because 'is_same_v<int, void>' evaluated to false
    template <class T> concept C = is_same_v<T, void>;
                                   ^
Despite that `C<T>` is unsatisfied, the compiler is substituting into the
conjoined `is_same_v<alias<T>, void>` atomic constraint.
-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200904/26e2fb88/attachment-0001.html>
    
    
More information about the llvm-bugs
mailing list