Вопросы по теме 'enable-if'
enable_if тип не относится к определенному классу шаблона
TL; DR: см. Последний абзац.
У меня есть operator& , определенный для нескольких классов шаблонов, например:
template <typename T>
struct Class {
Class(T const &t) { }
};
template <typename T_Lhs, typename T_Rhs>...
671 просмотров
schedule
16.09.2021
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 просмотров
schedule
26.03.2022
шаблон 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 просмотров
schedule
27.05.2022
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 просмотров
schedule
18.06.2022
Специализация групп функций для универсальных типов
Следующий код работает с gcc 4.7. Идея в том, что у меня есть эти общие функции, которые работают с последовательностями, указателями, кортежами, парами, пользовательскими типами и так далее. Если одна из этих функций определена для типа, то должны...
713 просмотров
schedule
04.07.2022
Есть ли хороший способ применить ограничения типа для параметров функции в вариативном шаблоне на С++?
У меня есть перечисление, назовем его Type. Он имеет значения как таковые:
enum Type { STRING, TYPE_A_INT, TYPE_B_INT};
Я хочу написать функцию Foo, которая может принимать произвольное количество значений типа {int, string}, но...
102 просмотров
schedule
17.07.2022
Разница между `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 просмотров
schedule
20.08.2022
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 просмотров
schedule
22.08.2022
Неоднозначная перегрузка С++ для универсального оператора шаблона ostream ‹‹
Этот вопрос следует за моим предыдущим вопросом: Generic operator‹‹ ostream C++ для строкового класса где я хотел бы реализовать общий оператор <<ostream , который будет работать для любого класса, которому принадлежит метод to_str() ....
368 просмотров
schedule
05.09.2022