私はC++ 11を学んでおり、ユーザー定義のリテラルに興味があります。 私はそれを少し演奏することに決めました。C++ 11ユーザー定義のリテラル
int n = 1000_000_000;
は、私はC++ 11でこの機能をシミュレートしてみました: 一部の言語では、このような構文を持っています。
inline constexpr unsigned long long operator "" _000 (unsigned long long n)noexcept
{
return n * 1000;
}
inline constexpr unsigned long long operator "" _000_000 (unsigned long long n)noexcept
{
return n * 1000*1000;
}
inline constexpr unsigned long long operator "" _000_000_000 (unsigned long long n)noexcept
{
return n * 1000*1000*1000;
}
int main(){
constexpr auto i = 100_000; // instead of 100000
constexpr auto j = 23_000_000; // instead of 23000000;
}
しかし、一般的なケースのために、私はそれをシミュレートすることができませんでした、すなわち
自動general_case = 123_456_789。 //コンパイルできない
私の質問は、「C++ 11を使用して上記の一般的なケースをシミュレートできますか?」です。
1_000_000で動作しますか?私は個人的にカスタムのユーザーリテラルとK M G(キロメガギガ)の文字を使用します。 – dtech
1_000_000をコンパイルしました! –
それで@ddriverのみの問題は、正確ではありません – aaronman