分配器命名要求——例外
Allocator named requirements -- exceptions
[allocator.requirements.general]/37
Throws: allocate
may throw an appropriate exception.
对其他地方暗示的“适当”有任何限制吗?
有效的自定义分配器是否可以对任何请求抛出 double
?
上下文:使用分配器的 noexcept
函数的实现,但如果所有分配都失败,则具有回退策略来执行某些操作。
Any limitations on "appropriate" implied elsewhere?
没有。 “适当”限定符没有 objective 含义。这实际上是一个使用常识的建议。 allocate
.
抛出的类型没有限制
Can a valid custom allocator just throw a double on any request?
如果作者认为double合适就符合了。我自己不认为它“合适”,但由作者决定。
Context: implementation of a noexcept function that uses allocator, but has fallback strategy to do something if all allocations fail.
您应该使用 catch-all 块:
try {
ptr = a.allocate();
} catch(...) {
// deal with it
}
[allocator.requirements.general]/37
Throws:
allocate
may throw an appropriate exception.
对其他地方暗示的“适当”有任何限制吗?
有效的自定义分配器是否可以对任何请求抛出 double
?
上下文:使用分配器的 noexcept
函数的实现,但如果所有分配都失败,则具有回退策略来执行某些操作。
Any limitations on "appropriate" implied elsewhere?
没有。 “适当”限定符没有 objective 含义。这实际上是一个使用常识的建议。 allocate
.
Can a valid custom allocator just throw a double on any request?
如果作者认为double合适就符合了。我自己不认为它“合适”,但由作者决定。
Context: implementation of a noexcept function that uses allocator, but has fallback strategy to do something if all allocations fail.
您应该使用 catch-all 块:
try {
ptr = a.allocate();
} catch(...) {
// deal with it
}