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

Проверка наличия у аргумента шаблона функции-члена
Возможный дубликат: Можно ли написать шаблон C++ для проверки существования функции? Это очень похоже на мой предыдущий вопрос . Я хочу проверить, содержит ли аргумент шаблона функцию-член или нет. Я попробовал этот код,...
1866 просмотров
schedule 16.01.2023

SFINAE: определить, есть ли у класса свободная функция
Есть ли способ с помощью SFINAE определить, перегружена ли свободная функция для данного класса? По сути, у меня получилось следующее решение: struct has_no_f { }; struct has_f { }; void f(has_f const& x) { } template <typename T>...
999 просмотров
schedule 28.04.2024

Портативный typeof() в С++ с использованием SFINAE?
Возможный дубликат: Отсутствие оператора typeof в C+ +03? Можно ли использовать шаблоны для получения времени компиляции типа выражения переносимо в C++ до C++0x? Что-то типа: int foo() { return 0; } //Let's say we have...
480 просмотров
schedule 19.06.2022

перегрузка шаблонов и SFINAE, работающие только с функциями, но не с классами
может кто-нибудь объяснить, почему компилятор принимает только этот код template<typename L, size_t offset, typename enable_if< (offset<sizeof(L)), int >::type =0> void a_function(){} template<typename L, size_t offset, typename...
3185 просмотров
schedule 05.03.2023

частичная специализация шаблона неоднозначности для функций-членов и функций-членов
Я не понимаю, почему этот код не может быть скомпилирован в main() из-за "неоднозначного создания экземпляра шаблона класса" при использовании &T::b и &T::c . Это ошибка g ++ 4.6.1? #include <iostream> #include <string>...
380 просмотров
schedule 30.06.2022

ошибка разрешения функции, когда тип возвращаемого значения выводится из закрытого класса шаблона
Я пытался реализовать класс комплексных чисел для типов с фиксированной точкой, где тип результата операции умножения будет функцией типов ввода. Мне нужны функции, в которых я могу умножать комплекс на комплекс, а также комплекс на действительное...
436 просмотров
schedule 12.10.2022

С++ Как выбрать класс с помощью опционального typedef, используя SFINAE или что-то еще
Пользователь настраивает класс шаблона библиотеки, определяя класс с указанием желаемых параметров. Назовите это манифестом. Идея состоит в том, чтобы иметь необязательные typedefs в манифесте. Например, если манифест пользователя содержит typedef...
2110 просмотров
schedule 01.04.2023

Ошибка замены
В настоящее время я пытаюсь написать некоторую гибкую математическую библиотеку времени компиляции и только что столкнулся с ошибкой замены, от которой мне не удается избавиться. Вот проблема: Первым делом пишу рациональный класс, поставлю только...
999 просмотров
schedule 19.05.2022

Использование SFINAE для расчета размера различных элементов
Введение Я только начинаю читать и изучать SFINAE. Чтобы улучшить свое понимание, я начал пробовать что-то сам. Итак, я задумался о полезном, но в то же время простом способе использования мощного трюка SFINAE, и я закончил думать о наборе...
555 просмотров
schedule 11.05.2022

специализация шаблона с массивами, std :: is_array
Я играю со специализацией шаблонов и SFINAE. Что касается следующего примера, все кажется простым: template <class T> void Do(T t, typename std::enable_if<std::is_integral<T>::value >::type* = 0) { cout...
2207 просмотров
schedule 12.01.2022

Указатель MSVC на перегруженную функцию в параметре шаблона
Я слонялся по проблеме по крайней мере две недели, меня блокировали вещами, которые я не мог понять, и задавал вопросы в SO, которые на самом деле не указывали на реальную проблему (глупый я!). Теперь, наконец, мне жаль, что я не нашел настоящую...
1044 просмотров
schedule 15.03.2024

Что делает 'void()' в 'auto f(params) -> decltype(, void())'?
Я нашел код здесь , который выглядел примерно так: auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. } Во всей документации, которую я читал, мне сказали, что decltype подписано как: decltype( entity ) or...
3330 просмотров

Определение того, является ли что-то (увеличение) диапазоном с помощью SFINAE
Для кода регистрации я хотел бы определить, можно ли повторить данный аргумент функции шаблона с помощью инструментов из Boost.Range или нет. Очевидно, мне нужно создать экземпляр другого кода независимо от того, есть он или нет, поэтому мне нужен...
897 просмотров
schedule 16.09.2022

как использовать SFINAE для включения функции-члена, возвращающей `auto`
В метапрограммировании шаблонов можно использовать SFINAE для возвращаемого типа, чтобы выбрать определенную функцию-член шаблона, т.е. template<int N> struct A { int sum() const noexcept { return _sum<N-1>(); } private: int...
541 просмотров
schedule 22.06.2023

Есть ли гарантия порядка подстановки в шаблоне функции после определения типа?
Рассмотрим этот шаблон функции: template<typename T> typename soft_error<T>::type foo(T, typename hard_error<T>::type) { } После выведения типа T из типа первого аргумента в вызове foo() компилятор продолжит замену T и...
254 просмотров
schedule 18.03.2022

Странная ошибка с перегрузкой шаблонного оператора
Когда я компилирую следующий фрагмент, я получаю ошибку компилятора с clang, но не с g++/MSVC: #include <string> template<typename T> struct Const { explicit Const(T val) : value(val) {} T value; }; template<typename...
1362 просмотров

использование sfinae для выбора различных реализаций метода в шаблоне clase
У меня есть простой класс-оболочка для графического интерфейса GTK, например: template <class T> class LabeledEntry { string name; T var; Gtk::HBox hbox; Gtk::Label label; Gtk::Entry entry; public: LabeledEntry(...
1086 просмотров
schedule 18.06.2023

Специализируйте шаблон для типов, содержащих typedef
У меня есть класс шаблона, который необходимо специализировать для параметров шаблона, содержащих определенный typedef. Поэтому мне нужно два определения, одно для случая, когда у него есть typedef, а другое для случая, когда его нет. Моя проблема...
522 просмотров
schedule 04.03.2023

Частичная специализация шаблона на основе трейтов аргументов
Предположим, у меня есть следующий шаблон: template <typename T> union example { T t; constexpr example(const T & t) : t(t) {}; /* We rely on owning class to take care * of destructing the active member */...
678 просмотров
schedule 23.07.2022

SFINAE для включения нешаблонной функции-члена
Вероятно, это дубликат, но я просто не могу найти ни одного, где у ОП явно та же проблема, что и у меня. У меня есть класс, и я пытаюсь включить operator- , только если параметр шаблона класса не беззнаковый тип. #include <type_traits>...
1382 просмотров
schedule 18.05.2023