Вопросы по теме 'enable-if'

enable_if тип не относится к определенному классу шаблона
TL; DR: см. Последний абзац. У меня есть operator& , определенный для нескольких классов шаблонов, например: template <typename T> struct Class { Class(T const &t) { } }; template <typename T_Lhs, typename T_Rhs>...
671 просмотров

enable_if: минимальный пример для функции-члена void без аргументов
Я пытаюсь лучше понять std::enable_if в C ++ 11 и пытаюсь написать минимальный пример: класс A с функцией-членом void foo() , которая имеет разные реализации на основе типа T из шаблона класса. Приведенный ниже код дает желаемый результат, но...
2867 просмотров
schedule 07.11.2021

Могу я просто заменить enable_if на decltype
После понимания decltype с двумя аргументами мне интересно, могу ли я просто использовать это вместо enable_if ? Например: template <typename T> decltype(T(), declval<bool>()) isConstructable() { return true; } Успешно с...
648 просмотров
schedule 22.11.2021

std :: is_base_of и виртуальный базовый класс
Есть ли способ определить, является ли базовый класс виртуальным базовым классом? std :: is_base_of идентифицирует базовый класс, но я ищу что-то вроде std :: is_virtual_base_of для идентификации виртуального базового класса. Это для целей...
405 просмотров
schedule 19.09.2021

Оператор перегрузки [] с другим типом возврата
Я работаю над форматом JSON, используя ‹C ++ 98›, и по этой причине я определил 3 класса: class Json { public: string key; }; class JsonElement:public Json { public: string value; } class JsonObject: public Json { public:...
70 просмотров
schedule 13.10.2021

Преобразование функции шаблона в общую лямбду
Я хотел бы передать шаблонные функции, как если бы они были общими лямбдами, однако это не работает. #include <iostream> #include <vector> #include <tuple> #include <string> #include <utility> // for_each with...
485 просмотров
schedule 20.02.2022

Рекурсивное разыменование указателя
Пытаясь ответить здесь на один вопрос, я нашел этот вопрос: Как рекурсивно разыменовать указатель (C++03)? Адаптированный код из ответа следующий: template<typename T> T& dereference(T &v) { return v; } template<typename...
486 просмотров
schedule 27.02.2022

enable_if и взаимоисключающие методы
Я не могу понять, почему следующий код не работает. компилятор (gcc), похоже, создает экземпляры обоих методов, и, очевидно, целое число либо со знаком, либо без знака, поэтому один всегда терпит неудачу. Я хотя enable_if был здесь, чтобы избежать...
303 просмотров
schedule 02.03.2022

Добавить / удалить элементы данных с параметрами шаблона?
Рассмотрим следующий код: template<bool AddMembers> class MyClass { public: void myFunction(); template<class = typename std::enable_if<AddMembers>::type> void addedFunction(); protected: double...
7807 просмотров

шаблон C++ enable_if не может сопоставить определение функции с существующим объявлением
Я пытаюсь определить функцию-член шаблона для класса шаблона вне класса, а также использовать SFINAE для эффективной частичной перегрузки функции. Минимальный пример того, что я пытаюсь сделать: Тест.ч: template<typename T, size_t D>...
799 просмотров
schedule 22.04.2022

Как использовать std::enable_if с типом возвращаемого значения?
C++14 будет иметь функции, тип возвращаемого значения которых можно вывести на основе возвращаемое значение. auto function(){ return "hello world"; } Могу ли я применить это поведение к функциям, которые используют enable_if для...
9120 просмотров

Enable_if как параметр шаблона
Скажите, пожалуйста, почему этот ответ работает. Что случилось с enable_if, после чего мы можем его опустить? (дальнейшее использование структуры Foo не требует этого enable_if в параметрах шаблона) Разве этот код не должен быть примерно...
361 просмотров
schedule 04.06.2022

Устранение неоднозначности члена класса при множественном наследовании
Предположим, у меня есть этот вариативный базовый шаблон класса: template <typename ... Types> class Base { public: // The member foo() can only be called when its template // parameter is contained within the Types ... pack....
1986 просмотров

Специализация групп функций для универсальных типов
Следующий код работает с gcc 4.7. Идея в том, что у меня есть эти общие функции, которые работают с последовательностями, указателями, кортежами, парами, пользовательскими типами и так далее. Если одна из этих функций определена для типа, то должны...
713 просмотров

Есть ли хороший способ применить ограничения типа для параметров функции в вариативном шаблоне на С++?
У меня есть перечисление, назовем его Type. Он имеет значения как таковые: enum Type { STRING, TYPE_A_INT, TYPE_B_INT}; Я хочу написать функцию Foo, которая может принимать произвольное количество значений типа {int, string}, но...
102 просмотров

Разница между `typename = enable_if_t‹›` и `enable_if_t‹,bool› = true`
Есть ли разница между использованием typename = enable_if_t<...> и enable_if_t<...,bool> = true для SFINAE? Я спрашиваю специально, так как я наткнулся на то, что кажется ошибкой: Ошибка компилятора с выражением fold в enable_if_t...
140 просмотров
schedule 09.08.2022

передача возвращаемого значения вызываемого метода через std::enable_if_t
У меня есть метод шаблона, который выполняет метод базового класса объекта с фиксированным значением аргументов, если он существует, а если нет, и он работает. Я использовал sfinae с std::enable_if_t, чтобы решить, существует ли метод. Чего я не...
173 просмотров
schedule 13.08.2022

Смешивание специализации шаблона и enable_if в шаблоне функции только с шаблонным типом возвращаемого значения
У меня есть следующий код, который не компилируется в VC2010: #include <type_traits> using namespace std; template <class C> typename enable_if<true, C>::type foo() { return C(); } template <> bool foo() { return true; }...
560 просмотров

enable_if в членах функций для пустоты и наследования
Я пытаюсь понять, почему этот код не компилируется: // test.h struct Base { virtual ~Base{}; virtual void execute() {} virtual void execute(int) {} virtual void execute(double) {} } template<class T> struct Test : Base {...
408 просмотров

Неоднозначная перегрузка С++ для универсального оператора шаблона ostream ‹‹
Этот вопрос следует за моим предыдущим вопросом: Generic operator‹‹ ostream C++ для строкового класса где я хотел бы реализовать общий оператор <<ostream , который будет работать для любого класса, которому принадлежит метод to_str() ....
368 просмотров
schedule 05.09.2022