C ++中的类/结构类型是什么?

时间:2017-01-20 15:07:08

标签: c++

我发现此处使用了很多令人困惑的语言,显然您可以使用classstruct关键字来创建用户定义的类型,但classstruct关键字可以使用他们自己被视为类型?

1 个答案:

答案 0 :(得分:3)

关键字,不,他们不是。就像询问if的类型一样。你看,type是表达式的属性。 if不是表达。因此,询问他的类型是没有意义的。 structclass

也是如此

但是,类型可以视为值。在进行模板元编程时,类型成为值。以下是一些例子:

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中具有基本实现。