小编Cha*_*l72的帖子

boost :: checked_delete的目的

我不明白boost :: checked_delete的目的.文件说:

在5.3.5/5中,C++标准允许使用delete-expression删除指向不完整类类型的指针.当类具有非平凡的析构函数或类特定的运算符delete时,行为是未定义的.有些编译器会在删除不完整的类型时发出警告,但不幸的是,并非所有编译器都会发出警告,程序员有时会忽略或禁用警告.

提供的函数和类模板可用于防止这些问题,因为它们需要完整的类型,否则会导致编译错误.

因此,C++标准允许您删除不完整的类型,如果类型具有非平凡的析构函数,则会导致未定义的行为.什么?一个不完整的类型怎么可能有任何析构函数?不完整的类型只是原型吗?

c++ standards boost

16
推荐指数
1
解决办法
3965
查看次数

C++中的函数组合

有许多令人印象深刻的Boost库,如Boost.Lambda或Boost.Phoenix,它们使C++成为一种真正的功能语言.但有没有一种直接的方法可以从任何2个或更多任意函数或函子创建复合函数?

如果我有:int f(int x)并且int g(int x),我想做一些像f . g静态生成一个新的函数对象的东西f(g(x)).

这似乎可以通过各种技术实现,例如这里讨论的技术.当然,您可以链接调用boost::lambda::bind以创建复合仿函数.但是Boost中是否有任何东西可以轻松地让你接受任何2个或更多的函数或函数对象并将它们组合起来创建一个复合函子,类似于你在Haskell这样的语言中的表达方式?

c++ boost functional-programming

9
推荐指数
3
解决办法
4592
查看次数

标签 统计

boost ×2

c++ ×2

functional-programming ×1

standards ×1