`

boost StaticAssert

阅读更多
static_assert库把断言的诊断时刻由运行期提前到编译期,让编译器检查可能发生的错误,能更好的增加程序的健壮性
#include<boost/static_assert.hpp>
#include<iostream>
using namespace std;
template<typename T>
T my_min(T a,T b)
{
    //invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
    BOOST_STATIC_ASSERT(sizeof(T)<sizeof(int));
    return a<b?a:b;
}

int main()
{
    cout << my_min(1,2);
}


分享到:
评论

相关推荐

    Boost库导引 ---

    `Boost.StaticAssert`提供静态断言,能在编译时捕获错误。 7. **跨平台兼容性** Boost库的一大优势是它的高度跨平台性,能够在多种操作系统和编译器上无缝工作,包括Windows、Linux、Mac OS等。 8. **容器与迭代...

    boost程序库导论

    - **BOOST_STATIC_ASSERT**:用于编译时断言。 - **checked_delete**:安全地删除对象,确保不会尝试删除空指针。 - **noncopyable**:辅助类,用于禁止拷贝构造和赋值操作。 - **addressof**:获取变量的地址。 - *...

    介绍Boost libraries: C++编程的下一个突破

    3. Utility:Boost的工具类库提供了很多有用的模板类和函数,比如BOOST_STATIC_ASSERT和polymorphic_downcast。它们通常用于编译时断言和类型安全的向下转型,这可以帮助程序员避免运行时错误。 4. Operators:在...

    Boost程序库完全开发指南(高清PDF)

    一些库因为设计简单、使用方便,如noncopyable、scopedPtr、staticassert等,适合新手入门;而像date_time和circular_buffer等库则可以提供便捷的解决方案,避免开发者自行实现。在项目中引入Boost库,有助于减少...

    C++准标准库Boost介绍

    4. **泛型编程和模板元编程**:Call_traits、Concept_check、Enable_if、In_place_factory、Mpl、Property_map、Static_assert、Type_traits等库,帮助开发者编写更加灵活和高效的模板代码。 5. **数学和数值计算**...

    Boost C++ Application Development Cookbook 源代码

    7. **类型安全**:Boost.StaticAssert和Boost.TypeIndex等库可以帮助开发者在编译时检测错误,确保类型安全,提高代码质量。 8. **序列化**:Boost.Serialization库提供了一种序列化和反序列化对象的方法,这对于...

    Boost C++ Application Development Cookbook - Second Edition - 2017.pdf

    - **元编程**:探索Boost.MPL和Boost.StaticAssert等元编程工具,实现更高级别的抽象和编译时计算。 - **函数式编程**:利用Boost.Lambda和Boost.Bind来实现简洁而强大的函数式编程风格。 - **并发编程**:讲解`...

    超越c++标准库boost程序库导论.rar

    8. **模式设计**:Boost库中还有一些实现设计模式的组件,如`pointer_container`(实现轻量级容器)、`static_assert`(静态断言)和`scoped_enum`(安全枚举)等,这些都是对C++语言特性的重要补充。 9. **序列化*...

    超越C++标准库-boost程序库导论

    - **Boost.StaticAssert**:允许在编译时进行条件检查。 #### 数学及数字处理 Boost在数学和数字处理方面也有诸多贡献: - **Boost.Math**:提供了一系列数学函数和分布,如统计分布、特殊函数等。 - **Boost....

    boost 1.41 中文文档,使用帮助,教程手册

    fatalerror99 array, bind & mem_fn, dynamic_bitset, function, functional/hash, in_place_factory & typed_in_place_factory, lambda, ref, smart_ptr, static_assert, string_algo, type_traits, typeof ...

    C++标准库Boost程序库导论

    - **BOOST_STATIC_ASSERT**: 在编译时期检查条件是否为真,常用于静态断言。 - **Checked_delete**: 一个安全删除指针的方法,可以防止删除空指针。 - **Noncopyable**: 用于创建不可复制的类。 - **Addressof**: ...

    boost uuid.pdf

    assert(uuid::static_size() == 16); assert(u.size() == 16); vector&lt;unsigned char&gt; v(16, 7); std::copy(v.begin(), v.end(), u.begin()); assert(u.data[0] == u.data[1] && u.data[15] == 7); cout...

    Beyond the C++Standard Library(boost中文版)

    - **功能简介**:Boost库提供了一些实用工具类,如`BOOST_STATIC_ASSERT`、`checked_delete`、`noncopyable`、`addressof`和`enable_if`等,这些工具类可以简化代码编写过程中的常见问题。 - **应用场景**:在开发...

    Beyond.the.C++.Standard.Library.An.Introduction.to.Boost.pdf

    Boost库中包含了一系列实用工具类,如`enable_if`、`static_assert`等,这些工具使得编程变得更加简单明了。通过使用这些工具,开发者可以在编译阶段检查条件并根据不同的情况选择合适的类型或模板特化,从而编写出...

Global site tag (gtag.js) - Google Analytics