Публикации по теме '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 просмотров
schedule
28.02.2022
Объясните C ++ SFINAE программисту, не работающему на C ++
Что такое SFINAE в C ++?
Не могли бы вы объяснить это словами, понятными программисту, не разбирающемуся в C ++? Кроме того, какой концепции в таком языке, как Python, соответствует SFINAE?
5766 просмотров
schedule
30.07.2022
Как выбрать правильный шаблон перегруженной функции во время компиляции?
Я пытаюсь понять, как выбрать правильный шаблон перегруженной функции во время компиляции , но компилятор усложняет мне задачу. Я могу заставить его работать, но я не понимаю, что происходит. Позволь мне объяснить.
У меня есть две структуры A и...
1457 просмотров
schedule
06.05.2023
Обнаружение поддержки оператора с помощью 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 просмотров
schedule
01.05.2023
Как проверить, является ли класс 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 просмотров
schedule
10.05.2023
проверьте, существует ли член, используя 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 просмотров
schedule
09.01.2023
Каков именно непосредственный контекст, упомянутый в стандарте C ++ 11, для которого применяется SFINAE?
Параграф 14.8.2 / 8 стандарта C ++ 11 определяет условия, при которых отказ замены должен или не должен приводить к «жесткой» ошибке компиляции (что приводит к сбою компиляции) или к «мягкой» ошибке, которая просто заставить компилятор отбросить...
3370 просмотров
schedule
04.11.2022