void main () nothrow
{
int[int] map;

foreach (pair; map.byKeyValue) // OK
{
}

foreach (key, val; map)
// 错误: `_aaApply2`不是`nothrow`.
{

}
}

对有嵌套​​AA​​类型实现​​toHash​​,是易错的.

​toHash​​不带​​无抛​​.错误,不是不抛.

带上​​不抛​​,必须按​​extern (D) size_t toHash() const nothrow @safe​​来声明​​toHash()​​,而不是​​const pure @trusted ulong()​​.

这样:

extern (D) size_t toHash() const nothrow @safe

来声明​​toHash​​呢?