次のコードにダングリング リファレンスがあるのはなぜですか? const への参照は、一時的なオブジェクトの有効期間を常にそのスコープまで延長すると考えていました。
boost::filesystem::recursive_directory_iterator it(dir_name);
const std::string& extension = it->path().extension().string();
std::cout << extension << std::endl; // error, dangling reference