SFINAE и концепции дают разные результаты для типа перечисленияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 SFINAE и концепции дают разные результаты для типа перечисления

Сообщение Anonymous »

Только по академическим причинам я тестирую SFINAE против концепций и записываю свои собственные черты. Я знаю, что есть std::is_integral и многое другое.
Я использую decltype( ptr+ T{}){};, чтобы проверить, является ли это целочисленным типом. При использовании SFINAE он сообщает «ложь», а при использовании понятий — «истина».
Полный пример кода:

Код: Выделить всё

#include 

// SFINAE
template < typename T >
struct my_is_integral
{
template < typename C >
static constexpr std::true_type check( C,  decltype( std::declval()+ C{})=nullptr)
{
return {};
}

template < typename >
static constexpr std::false_type check( ... ) { return {}; }

using type = decltype( check( 0 ));
static constexpr bool value = type::value;
};

template < typename T>
auto sfinaeIntegral(T) -> std::enable_if_t< my_is_integral::value, void >
{
std::cout  std::enable_if_t< !my_is_integral::value, void >
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79848496/sfinae-vs-concepts-deliver-different-results-for-enum-type[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»