Вопросы по теме '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 просмотров
schedule
12.10.2022
Определение того, является ли что-то (увеличение) диапазоном с помощью 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 просмотров
schedule
03.10.2022
использование 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