Вопросы по теме 'enable-if'
Как я могу написать шаблон функции для всех типов с определенной чертой типа?
Рассмотрим следующий пример:
struct Scanner
{
template <typename T>
T get();
};
template <>
string Scanner::get()
{
return string("string");
}
template <>
int Scanner::get()
{
return 10;
}
int main()
{...
826 просмотров
schedule
04.07.2022
enable_if и оператор преобразования?
Есть ли шанс использовать enable_if с оператором преобразования типов? Кажется сложным, поскольку и тип возвращаемого значения, и список параметров неявны.
5217 просмотров
schedule
28.07.2023
Вывод типа C++0x путается с boost::enable_if
Я пытаюсь написать общую функцию фильтрации, которая выполняет линейную интерполяцию по заданной координате выборки в многомерном массиве (произвольный ранг). Для этого мне нужен шаблон рекурсивной функции, который проходит по всем измерениям...
492 просмотров
schedule
07.06.2023
enable_if в функции шаблона члена шаблона класса
Похоже, это ошибка в MSVC10?
#include <type_traits>
template<int j>
struct A{
template<int i>
typename std::enable_if<i==j>::type
t(){}
};
int main(){
A<1>().t<1>(); //error C2770
}...
983 просмотров
schedule
11.09.2022
boost:enable_if для определения специального метода в шаблонном классе
Я хотел бы иметь собственный метод - я вызову MyMethod - в шаблонном классе - я вызову Foo - ТОЛЬКО, когда Foo был создан с определенными типами параметров шаблона (например, когда A - int, а B - строка), в противном случае, Я не хочу, чтобы MyMethod...
548 просмотров
schedule
10.11.2022
enable_if в Haskell
Как мне написать что-то вроде следующего в Haskell:
showSquare :: (Show a, Num a) => a -> String
showSquare x = "The square of " ++ (show x) ++ " is " ++ (show (x * x))
showSquare :: (Show a, not Num a) => a -> String
showSquare x =...
215 просмотров
schedule
10.11.2022
Почему enable_if_t в аргументах шаблона жалуется на переопределение?
У меня есть следующий случай, который работает с использованием std::enable_if :
template<typename T,
typename std::enable_if<std::is_same<int, T>::value>::type* = nullptr>
void f() { }
template<typename T,...
23649 просмотров
schedule
13.03.2024
Специализированный шаблон класса для любого подкласса X без добавления в шаблон дополнительного аргумента типа
мне нужно специализироваться
template< typename T, int Id >
struct ValueTraits
{
// Default version
static int getValue() { return 0; }
};
для любого подкласса некоторого ConcreteClass как T :
class ConcreteClass {};
struct...
120 просмотров
schedule
06.05.2022
sfinae: условие enable_if
Я всегда вижу, что enable_if используется только с условием std::is_integral::value.
Есть ли способ использовать в условии вызов функции функции-члена объекта другого класса шаблонов? Функция, о которой я говорю, должна выглядеть так:
bool...
1008 просмотров
schedule
01.07.2022
Как включить переключение наследования в зависимости от типа шаблона
Я хочу реализовать переключатель реализации в зависимости от параметра шаблона, который я передаю классу:
Если переданный тип шаблона является производным от определенного класса (здесь: Serializable), то контейнер DataElement, который создает...
408 просмотров
schedule
11.07.2022
Включить / отключить все входы и флажки с любым отмеченным флажком
У меня есть форма со многими текстовыми полями ввода и флажками. Всякий раз, когда флажок установлен, все поля ввода текста и все другие флажки (кроме того, который был отмечен) должны быть отключены. После снятия этого флажка все отключенные поля...
5937 просмотров
schedule
28.09.2022
std :: enable_if, основанный на том, что std :: is_convertible неправильно выводит шаблон
У меня такой код:
#include <iostream>
#include <type_traits>
template <typename T, typename std::enable_if
<std::is_convertible<int, T>::value, T>::type>
void func(T a)
{
std::cout...
1735 просмотров
schedule
13.02.2023
Резервный вариант SFINAE, когда функция не существует
В настоящее время я пытаюсь реализовать функцию toString , которая вызывает .toString() или std::to_string() в зависимости от того, что доступно для выведенного типа.
Пока у меня есть этот рабочий фрагмент:
#include <iostream>...
365 просмотров
schedule
17.06.2023
Как именно работает SFINAE?
У меня проблема с SFINAE. Я упускаю что-то важное, и чтение других вопросов не помогает :(
Вот код:
#include <string>
#include <type_traits>
#include <iostream>
// version with template class
template<typename T,...
213 просмотров
schedule
10.08.2022
Могу ли я определить шаблоны для разных наборов типов?
Мне нужно написать шаблонную функцию, которая ведет себя по-разному в зависимости от класса ее параметра:
template<class ContainerType>
bool myFunc(ContainerType in){
//do some stuff
}
template<class NotAContainerType>
bool...
519 просмотров
schedule
13.12.2022
Как работает std::enabled_if при включении через параметр
Я пытаюсь понять, как работает enable_if, и я понимаю почти все, кроме сценария № 3 из
https://en.cppreference.com/w/cpp/types/enable_if
template<class T>
void destroy(T* t,
typename...
104 просмотров
schedule
22.03.2024
определяемое пользователем преобразование не может использовать static_cast в C++
Я пытаюсь решить некоторые проблемы с Eigen . В процессе я обнаружил, что static_cast и определяемое пользователем преобразование конфликтуют. Возможно, проблема вызвана std::enable_if ?
Вот в основном то, что я пробовал:
#include...
209 просмотров
schedule
23.06.2022
Каков рекомендуемый способ моделирования концепций и ограничений?
Перед введением концепций и ограничений есть несколько способов смоделировать эту проверку во время компиляции. Возьмем, к примеру, функцию " order() ": (как реализовать LessThanComparable без концепций и ограничений - это отдельная история)...
240 просмотров
schedule
06.04.2022
Запретить создание экземпляра класса шаблона для типов, не поддерживаемых оператором извлечения строкового потока (››)
Я пытаюсь немного узнать о шаблонах и метафункциях, а именно о std::enable_if . Я делаю систему меню для наших школьных заданий (внеклассных, заметьте), и мне нужен способ получения информации от пользователя. Я хотел бы определить класс шаблона...
87 просмотров
schedule
24.11.2022
Могу ли я перегрузить переменные шаблона?
Я хочу объявить что-то вроде этого:
template <typename T>
constexpr enable_if_t<is_integral_v<T>, int[]> foo = { 1, 2 };
template <typename T>
constexpr enable_if_t<is_floating_point_v<T>, int[]> foo = { 10,...
199 просмотров
schedule
21.02.2023