使用 boost 创建一个总是抛出异常的 lambda 函数
是否可以使用 boost 创建一个总是抛出异常的内联 lambda?
(这个问题来自 “使用 boost 创建一个始终返回 true 的 lambda 函数”)。
假设我有一个采用某种形式谓词的函数:
void Foo( boost::function<bool(int,int,int)> predicate );
如果我想使用始终抛出异常的谓词来调用它,定义一个辅助函数:
bool AlwaysThrow( int, int, int ) { throw std::exception(); }
...
Foo( boost::bind( AlwaysThrow ) );
但是有没有办法调用这个函数(可能使用 boost::lambda)而不必定义一个单独的函数?
(注 1:我无法使用 C++0x。)
(注 2:我简化了这个示例。我实际的“谓词”函数不返回 bool,它返回没有默认构造函数的类型。)
Is it possible to create an inline lambda using boost which always throws an exception?
(this question follows on from "Using boost to create a lambda function which always returns true").
Suppose I have a function which takes some form of predicate:
void Foo( boost::function<bool(int,int,int)> predicate );
If I want to call it with a predicate that always throws an exception, define a helper function:
bool AlwaysThrow( int, int, int ) { throw std::exception(); }
...
Foo( boost::bind( AlwaysThrow ) );
But is there anyway to call this function (possibly using boost::lambda) without having to define a separate function?
(Note 1: I can't use C++0x.)
(Note 2: I've simplified this example. My actual "predicate" function doesn't return a bool, it returns a type which doesn't have a default-ctor.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一个
throw_exception< Boost.Lambda 中的 /code> 函数
。
例如:
There is a
throw_exception
function in Boost.Lambda.For example: