有理数のための分子/分母リテラル
C++0xのユーザー定義リテラルの使い道として
こんなのどうでしょう。
boost::rationalを生成するための、分子と分母を表すリテラルです。
#include <boost/rational.hpp> template <class I> class numerator { I value_; public: numerator(const I& value) : value_(value) {} operator I() const { return value_; } }; template <class I> class denominator { I value_; public: denominator(const I& value) : value_(value) {} operator I() const { return value_; } }; template <class I> boost::rational<I> operator/(const numerator<I>& lhs, const denominator<I>& rhs) { return boost::rational<I>(lhs, rhs); } numerator<unsigned long long int> operator "" _num(unsigned long long int value) { return numerator<unsigned long long int>(value); } denominator<unsigned long long int> operator "" _den(unsigned long long int value) { return denominator<unsigned long long int>(value); } int main() { boost::rational<unsigned long long int> r = 1_num / 3_den; // 1/3 }