C++11 static_assert(以及其中使用的函数)

2023-11-29

static_assert与模板一起似乎是一个非常好的功能。

但是,我很难在标准库中找到用于在编译时进行各种测试的函数。

例如,我正在寻找一个函数来检查一种类型是否是另一种类型的子类型。boost::is_base_of然而,这项工作是 std 中的一个类似功能,所以我不需要依赖 boost。

基本上,是否有一个很好的来源可以提供可用于以下用途的函数列表:static_assert并包含在C++11的标准库中?

When is static_assert被处决?我可以将它放在模板中的任何位置并针对每个模板实例对其进行评估吗?它可以用来将模板参数限制为类的特定子类型吗?


看看决赛C++11草案,第 20.7 节,特别是<type_traits> header.

你要问的是:std::is_base_of<base, derived>::value;

关于你的问题:static_assert可以在编译器认为合适的时候进行评估,但通常会:

  • 在模板中:如果表达式使用依赖名称,则在实例化时间内;否则,在定义时间内。
  • 模板外:在定义时间内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 static_assert(以及其中使用的函数) 的相关文章

随机推荐