fix C++11 option for Clang
use Boost.Typeof instead of decltype
replace std::is_signed with some Boost stuff