How can I tell that S1 and S2 are different instantiations of the same struct template, while Bar is an instantiation of a different struct template?
struct Foo(T...) {} struct Bar(T...) {} template SameStructTemplate(S1, S2) { // enum bool SameStructTemplate = ? } void main() { alias Foo!(int,int,int) S1; alias Foo!(float,int,int,int) S2; alias Bar!(float,int,int,int) S3; static assert(SameStructTemplate!(S1, S2)); static assert(!SameStructTemplate!(S1, S3)); } Bye and thank you, bearophile