brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · e8c7621 Raw
80 lines · cpp
1// RUN:  %clang_cc1 -std=c++2c -verify %s2 3template<template<typename> auto Var>4struct A{};5template<template<auto> auto Var>6struct B{};7template<template<typename> auto Var>8struct C{};9template<template<typename> concept C>10struct D{};11template<template<auto> concept C>12struct E{};13 14template<template<typename> auto Var>15int V1;16template<template<auto> auto Var>17int V2;18template<template<typename> auto Var>19int V3;20template<template<typename> concept C>21int V4;22template<template<auto> concept C>23int V5;24 25namespace packs {26 27template<template<typename> auto... Var>28struct A{};29template<template<auto> auto... Var>30struct B{};31template<template<typename> auto... Var>32struct C{};33template<template<typename> concept... C>34struct D{};35template<template<auto> concept... C>36struct E{};37 38template<template<typename> auto... Var>39int V1;40template<template<auto> auto...  Var>41int V2;42template<template<typename> auto...  Var>43int V3;44template<template<typename> concept... C>45int V4;46template<template<auto> concept... C>47int V5;48 49}50 51namespace concepts {52template<template<auto> concept...>53struct A{};54template<template<auto> concept... C>55struct B{};56template<template<auto> concept& C> // expected-error{{expected identifier}} \57                                    // expected-error {{in declaration of struct 'C'}}58struct C{};59}60 61namespace vars {62template<template<auto> auto...>63struct A{};64template<template<auto> auto & C> // expected-error {{expected identifier}} \65                                  // expected-error {{extraneous 'template<>'}}66struct B{};67template<template<auto> const auto> // expected-error {{expected identifier}} \68                                    // expected-error {{extraneous 'template<>'}}69struct C{};70}71 72namespace errors {73template<concept> // expected-error {{expected template parameter}} \74                  // expected-error {{extraneous 'template<>' in declaration of struct 'A'}}75struct A{};76template<template<concept> auto> // expected-error {{expected template parameter}} \77                                 // expected-error {{template template parameter must have its own template parameters}}78struct B{};79}80