曖昧なメソッド呼び出し

{
  package Foo;
  sub foo{}
}
{
  package Bar;
  sub foo{}
}
{
  package Baz;
  use parent -norequire => qw(Foo Bar);
}
Baz->foo(); # Ambiguous!

こんなときのBaz->foo()はメソッド解決順序(MRO)に依存している曖昧なメソッド呼び出しです。
C++だと,このようなケースはそもそもコンパイルが通りません*1。うらやましい。
しかしあるいはPerlでも警告を出せれば…と思ったんですがなかなかむずかしい。

*1:継承しただけではエラーにはならず,foo()を呼び出す段階でエラーになります。なお,usingディレクティブを使って曖昧さを解決することができます。