Great answer @avilachmish , that’s correct! The motivation for this riddle comes from the blog post Ambiguity in template parameters from Barry Revzin. He mentions that before C++20, when you look through unfamiliar code and come accross template <Kind Name> where you didn’t know what Kind was, you could rightly conclude that this is a non-type template parameter (most likely some kind of enumeration). But since C++20 Kind could be:
a concept (A)
a literal class type (B)
or even a class template (C)
I hope you could enjoy that riddle.
Cheers,
Kilian