Публикации по теме 'sfinae'


Modern C++ Is Fun 1: Признаки типов -SFINAE
Изучайте C++ гибкими способами Во-первых, здесь нужно прояснить пару вещей. Что такое Современный C++? Современный C++ по-прежнему остается C++, в основном эквивалентен C++ с прилагательным. Вы знаете, причина, по которой мы хотим присоединить прилагательное к существительному, заключается в том, что мы хотим сфокусировать или подчеркнуть некоторые его особенности. Например, когда мы говорим «очаровательный хаски», мы не только говорим о хаски этой породы, но и отмечаем, что..

Вопросы по теме 'sfinae'

Использование SFINAE для определения POD-типа типа в C ++
Первоначальное название здесь было Обходной путь для ошибки SFINAE в VS2005 C ++ . Это предварительное использование SFINAE для создания эквивалента для класса шаблона is_pod, который существует в TR1 (в VS2005 еще нет TR1). Его член value...
3143 просмотров
schedule 21.11.2022

SFINAE с недопустимыми параметрами типа функции или массива?
Обратите внимание на этот код: template<typename T> char (&f(T[1]))[1]; template<typename T> char (&f(...))[2]; int main() { char c[sizeof(f<void()>(0)) == 2]; } Я ожидал, что он выполнит SFINAE и выберет вторую...
2709 просмотров
schedule 20.06.2022

Если адрес функции не может быть разрешен во время вывода, это SFINAE или ошибка компилятора?
В C++0x правила SFINAE были упрощены таким образом, что любое недопустимое выражение или тип, возникающий в «непосредственном контексте» вывода, приводит не к ошибке компилятора, а скорее к сбою вывода (SFINAE). Мой вопрос заключается в следующем:...
13089 просмотров

Объясните C ++ SFINAE программисту, не работающему на C ++
Что такое SFINAE в C ++? Не могли бы вы объяснить это словами, понятными программисту, не разбирающемуся в C ++? Кроме того, какой концепции в таком языке, как Python, соответствует SFINAE?
5766 просмотров
schedule 30.07.2022

Как выбрать правильный шаблон перегруженной функции во время компиляции?
Я пытаюсь понять, как выбрать правильный шаблон перегруженной функции во время компиляции , но компилятор усложняет мне задачу. Я могу заставить его работать, но я не понимаю, что происходит. Позволь мне объяснить. У меня есть две структуры A и...
1457 просмотров

Обнаружение поддержки оператора с помощью decltype/SFINAE
В (несколько) устаревшей статье рассматриваются способы использования decltype вместе с с SFINAE, чтобы определить, поддерживает ли тип определенные операторы, такие как == или < . Вот пример кода для определения того, поддерживает ли...
8376 просмотров
schedule 29.05.2022

Ошибка имени типа C++
Извините за такое расплывчатое название, его очень трудно описать. Ошибка, с которой я застрял, заключается в следующем, я понятия не имею, что это значит: carray.h:176: ошибка: 'typename Carray‹T, Allocator›::is_iterator' имена...
768 просмотров
schedule 22.10.2022

SFINAE при попытке использовать bool дает ошибку компилятора: аргумент шаблона «T::value» включает параметр шаблона
Я попытался реализовать SFINAE, используя bool (в отличие от популярного void_ трюка ): template<typename T, bool = true> struct Resolve { static const bool value = false; }; template<typename T> struct...
3564 просмотров
schedule 13.06.2023

Как проще всего сделать код функции шаблона в зависимости от типа параметра
Я хочу написать шаблонную функцию, которая проверяет некоторое свойство Timestamp (класс наследуется от Timed ), но также должна работать с типами, не имеющими timestamp. Лучшее (и все еще довольно уродливое) решение, которое я нашел, заключается в...
154 просмотров
schedule 14.02.2024

Как написать наилучший трейт is_callable для шаблонного оператора()
У меня есть черта is_callable, определенная следующим образом: #ifndef IS_CALLABLE_HPP #define IS_CALLABLE_HPP #include <type_traits> namespace is_callable_detail { struct no {}; struct yes { no x[2]; }; template<bool...
1851 просмотров
schedule 02.05.2023

Различие SFINAE между подписанным и неподписанным
У меня есть функции для преобразования различных арифметических типов в тип с плавающей запятой половинной точности (просто uint16_t на самом низком уровне), и у меня есть разные функции для целых типов источников и типов с плавающей запятой,...
1414 просмотров
schedule 11.11.2022

Использование SFINAE дает разные результаты на GCC и Clang.
Я учусь использовать SFINAE в своих интересах. Я пытаюсь использовать его для выбора реализации функции на основе существования функции serialize() в объекте. Это код, который я использую, чтобы определить, определяет ли тип функцию serialize():...
453 просмотров
schedule 26.09.2022

Как вызвать функцию-член только в том случае, если она есть у объекта?
Возможный дубликат: Можно ли написать шаблон C ++ для проверки существования функции? У меня есть функция f , которая получает значение val типа T (шаблонное). Есть ли способ вызвать функцию-член для val , только если тип...
7227 просмотров
schedule 20.05.2023

Проверка наличия у класса конструктора копирования с TMP
Я пытался немного SFINAE, чтобы определить, есть ли у универсального типа T конструктор копирования, который я могу использовать. Вот где я сейчас нахожусь. template <bool statement, typename out> struct Failable { typedef out Type; };...
1945 просмотров

Как проверить, является ли класс B производным от семейства шаблонов классов
Как проверить во время компиляции, является ли класс B производным от std::vector? template<class A> struct is_derived_from_vector { static const bool value = ????; }; Как проверить во время компиляции, является ли класс B производным...
1524 просмотров
schedule 30.07.2023

Можно ли специализировать шаблон по языковой привязке?
Языковая связь функции является частью ее типа: 7.5.1 [dcl.link] стандарта ISO C++: Языковая связь по умолчанию для всех типов функций, имен функций и имен переменных — это языковая связь C++. Два типа функций с разными языковыми связями...
274 просмотров
schedule 17.04.2024

C++: устранение неоднозначности частичной специализации вручную (с помощью SFINAE)
Я реализую универсальный класс, который должен вести себя по-разному для разных наборов типов (не только для разных дискретных типов). Цель состоит в том, чтобы сериализовать объекты разных типов, чтобы отправлять их по пользовательскому протоколу...
888 просмотров

проверьте, существует ли член, используя enable_if
Вот что я пытаюсь сделать: template <typename T> struct Model { vector<T> vertices ; #if T has a .normal member void transform( Matrix m ) { each vertex in vertices { vertex.pos = m *...
28255 просмотров
schedule 06.06.2023

Как извлечь из структуры специализацию с наивысшим индексом?
Я пытаюсь выполнить метапрограммирование шаблона и обнаруживаю необходимость «извлечь» наивысший индекс специализации некоторой структуры в некотором типе. Например, если у меня есть несколько типов: struct A { template<unsigned int>...
290 просмотров

Каков именно непосредственный контекст, упомянутый в стандарте C ++ 11, для которого применяется SFINAE?
Параграф 14.8.2 / 8 стандарта C ++ 11 определяет условия, при которых отказ замены должен или не должен приводить к «жесткой» ошибке компиляции (что приводит к сбою компиляции) или к «мягкой» ошибке, которая просто заставить компилятор отбросить...
3370 просмотров
schedule 04.11.2022