Информация об изменениях

Сообщение Re[2]: Есть ли метод у класса - HasMethod - старая тема от 11.11.2019 7:54

Изменено 11.11.2019 8:09 rg45

Re[2]: Есть ли метод у класса - HasMethod - старая тема
Здравствуйте, prog123, Вы писали:

P>
P>    //static_assert(HasMember1<B>::value);   // uncommment and get compilation error
P>    //static_assert(HasMember1<int>::valuе);  // the same as above
P>



Беда в том, что эти выражения и без static_assert приводят к ошибке. А хотелось бы чтоб они давали false, так, чтоб к ним можно было применить логическое отрицание и использовать в SFINAE, например.

templame <typename T>
std::enable_if_t<HasMemeber1<T>::value> foo(const T& t) { t.Member1(); }

templame <typename T>
std::enable_if_t<!HasMemeber1<T>::value> foo(const T& t) { process_common_case(t); }
Re[2]: Есть ли метод у класса - HasMethod - старая тема
Здравствуйте, prog123, Вы писали:

P>
P>    //static_assert(HasMember1<B>::value);   // uncommment and get compilation error
P>    //static_assert(HasMember1<int>::valuе);  // the same as above
P>



Беда в том, что эти выражения и без static_assert приводят к ошибке. А хотелось бы, чтоб они давали false, так, чтоб к ним можно было применить логическое отрицание и использовать в SFINAE, например.

templame <typename T>
std::enable_if_t<HasMemeber1<T>::value> foo(const T& t) { t.Member1(); }

templame <typename T>
std::enable_if_t<!HasMemeber1<T>::value> foo(const T& t) { process_common_case(t); }