try_implicit_cast<>() supports non default constructible target types

This commit is contained in:
Pavel Kirienko
2014-03-10 11:12:57 +04:00
parent 38e43e58ad
commit 224a072120
2 changed files with 17 additions and 1 deletions
@@ -101,10 +101,17 @@ struct TryImplicitCastImpl
};
template <typename To, typename From>
To try_implicit_cast(const From& from, const To& default_ = To())
To try_implicit_cast(const From& from, const To& default_)
{
return TryImplicitCastImpl<From, To>::impl(from, default_,
BooleanType<IsImplicitlyConvertibleFromTo<From, To>::Result>());
}
template <typename To, typename From>
To try_implicit_cast(const From& from)
{
return TryImplicitCastImpl<From, To>::impl(from, To(),
BooleanType<IsImplicitlyConvertibleFromTo<From, To>::Result>());
}
}