Kompakt katlama ifadesini başarılı bir şekilde kullanmaya çalışıyorum. Burada ÖrneğinC++ 17 kat ifade sözdizimi?
çalışan bir olan C++ 17 kod
bir daha kompakt forma tercüme isteyentemplate <bool... B>
struct Fold_And : std::integral_constant<bool, (B && ...)>
{
};
template <bool... B>
constexpr auto Fold_And_v = Fold_And<B...>::value;
template <typename V, typename... Vs>
std::enable_if_t<
Fold_And_v<std::is_floating_point_v<V>,
std::is_floating_point_v<Vs>...> >
foo(const V& v, const Vs&...)
{
}
Ancak
template <typename V, typename... Vs>
std::enable_if_t<std::is_floating_point_v<V> && ... &&
std::is_floating_point_v<Vs> >
foo_compact(const V& v, const Vs&...)
{
}
(ara madde Fold_And
kullanarak değil), Bu g ++ ve clang ++ derleyiciler hem derlemek için başarısız olduğu gibi görünüşte yasadışı C++.
sorum: Bu foo_compact()
yalnızca bir sözdizimi sorun
- mı? (Sağ biri nedir?)
Ya
- kat ifade karmaşık subexpressions ile directy kullanılamaz ve biz
Fold_And
yapı kullanılarak 2 adım yaklaşımdır (foo()
kodunu kullanarak daha iyi yapamaz)?
Argg ... Bir acemi hatası! Teşekkürler ve gürültü için özür dilerim! –
TIL katlama ifadeleri şablon argümanları olarak kullanılabilir. Benim için büyük bir "duh" anı. – StoryTeller