我如何static_assert类型?

时间:2013-11-07 00:26:26

标签: c++

受到this question上的一条评论的启发,我想在我的代码中写这个,因为我可能做了错误的假设,如果我将代码移植到两个类型不是的平台,则需要调查相同。

static_assert(typeid(float) == typeid(GLfloat), "GLfloat is unexpected type");

但由于error: call to non-constexpr function ‘bool std::type_info::operator==(const std::type_info&) const’

,因此无法编译

但我可以这样写: -

static_assert(sizeof(float) == sizeof(GLfloat), "GLfloat is unexpected size");

它的工作方式与预期一致。 如果我在新平台上的假设是错误的,那么很可能足以让我产生编译时错误,但我想知道是否有任何方法可以实现我真正想要的 - 比较实际类型?

1 个答案:

答案 0 :(得分:12)

使用特征:

#include <type_traits>

static_assert(std::is_same<float, GLfloat>::value, "GLfloat is not float");