[Example 1: template<auto T, auto NS>void fn(){using a =[:T:]<1>; // [:T:]<1> is dependent because [:T:] is dependentstatic_assert([:NS:]::template TCls<1>::v == a::v); // [:NS:] is dependent}namespace N {template<auto V>struct TCls {staticconstexprint v = V; };
}int main(){
fn<^^N::TCls, ^^N>();
} — end example]
[Example 2: template<template<class>class X>struct S {[:^^X:]<int, float> m;
};
template<class>struct V1 {};
template<class, class=int>struct V2 {};
S<V1> s1; // error: V1<int, float> has too many template arguments
S<V2> s2; // OK — end example]