C++11
ユーザー定義リテラルを提供します。私はそれらをいじり始めたばかりですが、定義した単一のリテラルにすべてのSI 乗数を自動的に追加できるかどうか疑問に思いました。
たとえば、私が定義した場合
Length operator "" _m(long double m) {
return Length(m); // Length in meters
}
whereLength
はいくつかの基本クラスのサブクラスです。を返すすべてのリテラルに対して(ブースト演算子と同じ精神で) SI 乗数を自動的Units
に追加するメカニズムが必要です。Length
// these are added automatically when defining the literal "_m":
// Length in:
Length operator "" _Ym(long double Ym); // Yottameters
Length operator "" _Zm(long double Zm); // Zetameters
... // ...
... // ...
Length operator "" _km(long double km); // kilometers
Length operator "" _mm(long double mm); // millimeters
... // ...
... // ...
Length operator "" _zm(long double zm); // zeptometers
Length operator "" _ym(long double ym); // yoctometers
私が見る限り、おそらくいくつかのマクロ マジックを除けば、すべてのユーザー定義リテラルには明示的な定義が必要なため、これを自動的に行う方法はありません。
..または私は何かを見落としていますか?