I'm a bit surprised by this snippet from the "Traversing and manipulating data" example:
for (auto& elem : *arr) {
// visitation helps deal with the polymorphic nature of TOML data
elem.visit([=](auto&& el) noexcept
{
if constexpr (toml::is_number<decltype(el)>)
(*el)++;
else if constexpr (toml::is_string<decltype(el)>)
el = "five"sv;
});
}
I thought constexpr would work at compile time but how can the compile here inside a loop "know" when this labmda will encounter an int or a string ?