brintos

brintos / llvm-project-archived public Read only

0
0
Text · 675 B · cad7687 Raw
33 lines · cpp
1// RUN: %clang_cc1 -std=c++2a -triple x86_64-elf-gnu %s -emit-llvm -o - | FileCheck %s2 3struct S {4    consteval void operator()() {}5};6 7template <class Fn>8constexpr void dispatch(Fn fn) {9    fn();10}11 12template <class Visitor>13struct value_visitor {14    constexpr void operator()() { visitor(); }15    Visitor&& visitor;16};17 18template <class Visitor>19constexpr auto make_dispatch() {20    return dispatch<value_visitor<S>>;21}22 23template <class Visitor>24constexpr void visit(Visitor&&) {25    make_dispatch<Visitor>();26}27 28void f() { visit(S{}); }29 30// CHECK: define {{.*}} @_Z1fv31// CHECK-NOT: define {{.*}} @_Z5visitI1SEvOT_32// CHECK-NOT: define {{.*}} @_Z13make_dispatchI1SEDav33