mirror of
https://github.com/ToruNiina/toml11.git
synced 2025-09-18 02:08:09 +08:00
feat: make SFINAE condition strict
This commit is contained in:
15
toml/get.hpp
15
toml/get.hpp
@@ -416,8 +416,9 @@ T get(const basic_value<C, M, V>& v)
|
|||||||
|
|
||||||
// for toml::table.
|
// for toml::table.
|
||||||
template<typename T, typename Table>
|
template<typename T, typename Table>
|
||||||
enable_if_t<detail::is_map<Table>::value, decltype(
|
enable_if_t<detail::conjunction<detail::is_map<Table>,
|
||||||
::toml::get<T>(std::declval<typename Table::mapped_type&>()))>
|
detail::is_basic_value<typename Table::mapped_type>>::value,
|
||||||
|
decltype(::toml::get<T>(std::declval<typename Table::mapped_type&>()))>
|
||||||
find(Table& tab, const toml::key& ky, std::string tn = "unknown table")
|
find(Table& tab, const toml::key& ky, std::string tn = "unknown table")
|
||||||
{
|
{
|
||||||
if(tab.count(ky) == 0)
|
if(tab.count(ky) == 0)
|
||||||
@@ -428,8 +429,9 @@ find(Table& tab, const toml::key& ky, std::string tn = "unknown table")
|
|||||||
return ::toml::get<T>(tab.at(ky));
|
return ::toml::get<T>(tab.at(ky));
|
||||||
}
|
}
|
||||||
template<typename T, typename Table>
|
template<typename T, typename Table>
|
||||||
enable_if_t<detail::is_map<Table>::value, decltype(
|
enable_if_t<detail::conjunction<detail::is_map<Table>,
|
||||||
::toml::get<T>(std::declval<typename Table::mapped_type const&>()))>
|
detail::is_basic_value<typename Table::mapped_type>>::value,
|
||||||
|
decltype(::toml::get<T>(std::declval<typename Table::mapped_type const&>()))>
|
||||||
find(Table const& tab, const toml::key& ky, std::string tn = "unknown table")
|
find(Table const& tab, const toml::key& ky, std::string tn = "unknown table")
|
||||||
{
|
{
|
||||||
if(tab.count(ky) == 0)
|
if(tab.count(ky) == 0)
|
||||||
@@ -440,8 +442,9 @@ find(Table const& tab, const toml::key& ky, std::string tn = "unknown table")
|
|||||||
return ::toml::get<T>(tab.at(ky));
|
return ::toml::get<T>(tab.at(ky));
|
||||||
}
|
}
|
||||||
template<typename T, typename Table>
|
template<typename T, typename Table>
|
||||||
enable_if_t<detail::is_map<Table>::value, decltype(
|
enable_if_t<detail::conjunction<detail::is_map<Table>,
|
||||||
::toml::get<T>(std::declval<typename Table::mapped_type &&>()))>
|
detail::is_basic_value<typename Table::mapped_type>>::value,
|
||||||
|
decltype(::toml::get<T>(std::declval<typename Table::mapped_type &&>()))>
|
||||||
find(typename std::remove_reference<Table>&& tab, const toml::key& ky,
|
find(typename std::remove_reference<Table>&& tab, const toml::key& ky,
|
||||||
std::string tn = "unknown table")
|
std::string tn = "unknown table")
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user