いろいろ試してわかったこと
・catchで同じ型の&やconst&が同時catchされていても、
 &やconst &としてthrowしたときに
 &やconst &でcatchされる訳ではない
 可能な限り上の方でcatchされる
 コピーが発生することもある
・throwされた型から暗黙的に変換可能な型のcatchがあっても、
 型が違うならcatchされない
 例えば、std::stringのcatchがあるときに
 throw "Hello, world!"とかやってもcatchされない
 std::stringでcatchするにはthrow std::string("Hello, world")
 とかしないといけない
・catchされるときに呼ばれるコピーコンストラクタで例外が飛ぶと
 catch不可能
 一番外側でcatch (...)してもcatchできなかった
 →これはまずくね? clangのバグ?