Why isn't a call to skipOver(string, string) nothrow? I see no reason why it shouldn't be. Further, this test should be qualifyable as nothrow: @safe pure /* TODO nothrow @nogc */ unittest { import std.algorithm.searching : skipOver; auto x = "beta version"; assert(x.skipOver("beta")); assert(x == " version"); }