cpprefjp / site

cpprefjpサイトのMarkdownソース
https://cpprefjp.github.io/
382 stars 157 forks source link

cmath の additional overloads について #172

Closed kariya-mitsuru closed 10 years ago

kariya-mitsuru commented 10 years ago

C++11 では cmath の各関数に追加のオーバーロードが定義されたので、cpprefjp の説明では最後に関数テンプレートが記載されています。 しかし、規格書([c.math] p11)では追加のオーバーロードについて、どのような定義とすべきかは記載されていないため、極端な話関数テンプレートでなくても良いと思うので、関数テンプレートの形での記載は望ましくないと思うのですが、いかがでしょうか?

faithandbrave commented 10 years ago

@bolero-MURAKAMI さんに声をかけておきました。

faithandbrave commented 10 years ago

additional overloadについて調べました。Marshal Clowのブログで解説されていました。

http://marshall.calepin.co/doing-a-good-job-with-ltcmathgt.html

以下のように、整数と浮動小数点数の任意の組み合わせを引数として渡すためのものなのですね。

pow (2, 2.0);       // first parameter is integer
pow (2.0, 2LL);     // second parameter is long long

現在、cpprefjpのcmath/powでは以下のように書かれていますが、

template<class Arithmetic1, class Arithmetic2>
Promoted pow(Arithmetic1 x, Arithmetic2 y);

これを関数テンプレートではなく、以下のように書いた方がいいという主張だと理解しました。

Promoted pow(Arithmetic1 x, Arithmetic2 y);

私はそれで問題ないと思います。

bolero-MURAKAMI commented 10 years ago

そうですね。 その際、Arithmetic1, Arithmetic2 といった表記は(Promoted が現在そうであるように)、 個別的な型と区別するために斜体表記したほうがよいと思います。

また、Promoted, Arithmetic といった型の表記が何を示すのかを cmath の概要ページに書いておいたほうがわかりやすいと思いました。

その対応で問題ないようでしたら僕がやっておきます。

faithandbrave commented 10 years ago

+1

kariya-mitsuru commented 10 years ago

私も良いと思います。 complex の方も、ボレロさんの修正結果を見て合わせようと思います。

faithandbrave commented 10 years ago

では、担当をボレロさんにしておきますね。

faithandbrave commented 10 years ago

@bolero-MURAKAMI さんの対応が終わったという認識です。 一旦 @kariya-mitsuru さんを担当にしますので、変更を確認してOKなら閉じてください。

kariya-mitsuru commented 10 years ago

確認しました。クローズします。