我发现此处使用了很多令人困惑的语言,显然您可以使用class
和struct
关键字来创建用户定义的类型,但class
和struct
关键字可以使用他们自己被视为类型?
答案 0 :(得分:3)
关键字,不,他们不是。就像询问if
的类型一样。你看,type是表达式的属性。 if
不是表达。因此,询问他的类型是没有意义的。 struct
和class
但是,类型可以视为值。在进行模板元编程时,类型成为值。以下是一些例子:
template<int v>
struct constant {
constexpr static auto value = v;
};
template<typename A, typename B>
struct addition {
constexpr static auto value = A::value + B::value;
};
int main() {
// Prints 7
std::cout << addition<constant<2>, constant<5>>::value << std::endl;
}
即使struct
没有类型,它也可能有其他属性。根据{{3}},您可以反映关键字。
using meta_struct = reflexpr(struct);
/* do whatever you want with meta_struct:: */
此提案将用于TS并在clang中具有基本实现。