IT翻訳者の疑問

この業界に入って約20年。私の疑問は相変わらず解決しません。

MSDNライブラリ「プロシージャのオーバーロードに関する注意事項」への突っ込み(続き)

3月16日の日記の続きです。
以下で取り上げた文章は、http://msdn2.microsoft.com/ja-JP/library/e18yd02w.aspxおよびhttp://msdn2.microsoft.com/en-us/library/e18yd02w.aspxからの引用です。

日本語 シグネチャが異なる場合は、Function プロシージャと Sub プロシージャとの間のオーバーロードも可能です。戻り値を持つか持たないかという点だけが異なる 2 つのオーバーロードが共存することはできません。
英語 You can overload a Function procedure with a Sub procedure, and vice versa, provided they have different signatures. Two overloads cannot differ only in that one has a return value and the other does not.
修正案1 シグネチャが異なっていれば、Function プロシージャと Sub プロシージャとの間のオーバーロードも可能です。2 つのオーバーロードの違いが、戻り値を持つか持たないかという点だけであってはなりません。
修正案2 シグネチャが異なっていれば、Function プロシージャと Sub プロシージャとの間のオーバーロードも可能です。戻り値を持つか持たないかという点だけが異なる 2 つのオーバーロードを作成することはできません。

「共存」という言葉にちょっと引っかかりを感じました。国語辞典で「共存」の意味を調べると「二つ以上のものが一緒に生存したり存在したりすること。 」とあります(『大辞林』)。「戻り値を持つか持たないかという点だけが異なる 2 つのオーバーロード」の問題を解決するには、2つのオーバーロードを引き離しておけばよいのでしょうか。うーん。オーバーロードとは「多重定義」ですから、「共存すること」は当たり前ですよね。なぜ「Two overloads cannot differ only in that one has a return value and the other does not.」という文章がここにあるかといいうと、直前の文章で「Functionプロシージャ(戻り値を返す)とSubプロシージャ(戻り値を返さない)の間のオーバーロードも可能」と述べているからですが、このようなオーバーロードを作るのであれば、戻り値の有無以外にも、たとえば引数の数などが異なっていなければならないということだと思います。