Compiles fails with compilers supporting char16_t and char32_t fails if the library doesn't provides std::u16string and std::u32string
In file included from ratio_io/ratio_io_pass.cpp:16:
../../../boost/ratio/ratio_io.hpp:130:17: error: no type named 'u16string' in namespace 'std'
static std::u16string symbol() {return std::u16string(1, u'a');}
~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
"/Users/viboes/clang/clang+llvm-3.1-x86_64-apple-darwin11/bin/clang++" -x c++ -std=c++11 -O0 -g -Wextra -Wno-long-long -pedantic -O0 -fno-inline -Wall -pedantic -g -DBOOST_ALL_NO_LIB=1 -DBOOST_ENABLE_WARNINGS -DBOOST_MPL_NEXT_PRIOR_EXT -DBOOST_RATIO_USES_MPL_ASSERT -DBOOST_RATIO_VERSION=2 -I"../../.." -c -o "../../../bin.v2/libs/ratio/test/ratio_io_pass.test/clang-darwin-3.1x/debug/ratio_io/ratio_io_pass.o" "ratio_io/ratio_io_pass.cpp"
Currently there are no macros BOOST_NO_CXX11_U16STRING and BOOST_NO_CXX11_U32STRING signaling that the standard library doesn't provides std::u16string or std::u32string. The attached patch avoid the compile error when Boost.Config will provide these macros. In the mean time the user needs to define them explicitly while using Boost.ratio in these conditions.