Ci-dessous est extrait de cppref:Existe-t-il un cas d'utilisation typique qui doit utiliser `is_detected_v`?
#include <experimental/type_traits>
template<class T>
using copy_assign_t = decltype(std::declval<T&>() = std::declval<const T&>());
struct Meow { };
using namespace std::experimental;
int main()
{
static_assert(is_detected_v<copy_assign_t, Meow>,
"Meow should be copy assignable!"); // version 1
static_assert(is_copy_assignable_v<Meow>,
"Meow should be copy assignable!"); // version 2
}
est-il une différence entre version 1
et version 2
?
Y a-t-il un cas d'utilisation typique qui doit utiliser is_detected_v
?
Le cas d'utilisation pour cela est SFINAE, pas d'erreurs matérielles. Si vous voulez une erreur dure, la solution la plus directe est bien. –