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

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

Почему type_traits реализуются со специализированными структурами шаблонов вместо constexpr?
Есть ли причина, по которой стандарт определяет их как шаблон struct s вместо простого логического constexpr ? В дополнительном вопросе, на который, вероятно, будет дан хороший ответ на основной вопрос, как можно было бы делать enable_if вещи с...
2355 просмотров

Проверьте, объявлен ли объект const
Я хотел бы прервать компиляцию, если объект объявлен константным. Не работает следующее: #include <type_traits> struct A { A() : v(0) { static_assert( ! std::is_const<decltype(*this)>::value, "declared as const"...
1733 просмотров
schedule 16.01.2023

Что случилось с моими членами класса условного шаблона SFINAE redux:?
Я новичок в написании кода метапрограммирования шаблона (а не просто в его чтении). Так что я столкнулся с некоторыми проблемами нубов. Один из них довольно хорошо резюмирован в сообщении, не относящемся к SO, под названием " Что случилось с моим...
2543 просмотров

Поддержка пакета параметров std :: is_base_of ()
Есть ли возможность иметь статическое утверждение, реализует ли тип, предоставленный в качестве аргумента шаблона, все типы, перечисленные в пакете параметров, т.е. с учетом пакета параметров std :: is_base_of ()? template <typename Type,...
1284 просмотров

Неверный результат для std::is_tribuly_constructible‹T, T&›::value при объявлении T T::T(T&)
Это небольшая проблема, с которой я запутался. Я не знаю, как это описать, поэтому просто посмотрите коды ниже: struct B { B() {} B(B&) { std::cout << "not trivial\n"; } }; int main() { B b1; B b2(b1);...
912 просмотров
schedule 09.05.2024

различное поведение активатора в разных контекстах в шаблонах классов
Почему поведение такое разное? Версия #if 1 успешно (что странно) компилируется и выдает ожидаемый результат в stdout , но версия с #if 0 этого не делает: #include <iostream> #include <type_traits> #include <cstdlib>...
116 просмотров
schedule 26.04.2024

Введите trait, чтобы получить продвижение аргумента по умолчанию
[Отказ от ответственности: я знаю ответ на этот вопрос. Я подумал, что это может представлять некоторый общий интерес.] Вопрос. Как мы можем иметь свойство типа, которое создает тип, полученный в результате выполнения повышения аргумента по...
633 просмотров
schedule 01.02.2023

должен ли std::common_type использовать std::decay?
Учитывая типы A,B , меня интересует точное определение std::common_type<A,B> , игнорируя вариативный случай std::common_type<A...> для произвольных типов A... . Так что давайте using T = decltype(true ? std::declval<A>() :...
1796 просмотров

Когда можно сравнить два указателя?
Существует так много вопросов о сравнении двух указателей, но я не нашел ни одного вопроса о том, подходят ли два типа для сравнения указателей. Данный A* a; B* b; Я хочу знать, действительно ли выражение a @ b , где @ является одним из...
143 просмотров

Как специализировать класс свойств для T, а также для всех потомков T
Я хочу, чтобы класс свойств применялся к типу, а также к его потомкам. Это возможно? template <typename E> struct Garble { }; template <typename T> struct wooble_traits; template <typename E> struct...
258 просмотров

Введите черты, чтобы получить результат продвижения от оператора
Правила неявного преобразования типов в операторах C++ Перечисляет неявное преобразование типов для C++. Итак, вопрос в том, есть ли черта типа, которая может сделать эту таблицу? что-то похожее на template <typename T, typename J>...
171 просмотров
schedule 11.10.2023

Почему мой оператор поиска класса шаблона черт не работает‹‹ для llvm::StringRef?
После вопроса Как я могу определить, может ли тип передаваться в std::ostream? Я написал трейт класс, который говорит, может ли какой-либо тип передаваться в поток ввода-вывода. Черта, казалось, работала хорошо до тех пор, пока я не обнаружил...
310 просмотров
schedule 05.01.2023

как определить, является ли тип шаблона С++ строкой в ​​стиле C
Я пытаюсь написать шаблон is_c_str , чтобы проверить, является ли тип строкой в ​​стиле c. Мне это нужно как попытка написать функцию to_string, как показано в моем другом вопросе здесь: Специализация шаблона для итераторов контейнеров STL? ....
3745 просмотров
schedule 12.04.2022

Как определить черту типа is_iterator?
Я пытаюсь закодировать черту типа is_iterator<T> . Где, когда T является типом итератора, is_iterator<T>::value == true в противном случае - is_iterator<T>::value == false . Что я пробовал до сих пор: template...
2532 просмотров
schedule 18.12.2023

std::is_constructible для типа с закрытым деструктором
Каков ожидаемый результат для std::is_constructible для типа с закрытым или защищенным деструктором? Например, я все еще могу создать такой объект в куче, хотя освободить его может только друг: #include <type_traits> class Foo {...
830 просмотров
schedule 08.03.2023

найти имя типа имени типа в параметре шаблона
Я хотел бы, чтобы следующий код компилировался, когда foo получает что-либо, полученное из базы, иначе возникает ошибка компиляции. Я написал класс признаков типа is_Base, потому что std::is_base_of плохо работает с моими шаблонами. Я рядом. Я...
235 просмотров
schedule 05.05.2023

Требования std::is_tribuly_copyable
Стандарт С++ (и несколько SO answers ) утверждает, что для того, чтобы квалифицироваться как is_trivially_copyable<T> , тип T должен иметь: Деструктор по умолчанию, Никаких виртуальных функций, Никаких виртуальных базовых классов....
615 просмотров
schedule 29.04.2023

Функция шаблона, которая соответствует только определенным типам?
Я хочу определить шаблон функции: template<typename T> void foo(T arg) Но я хочу, чтобы T соответствовало только определенным типам. В частности, T должен быть производным (возможно, посредством множественного наследования) от...
1440 просмотров
schedule 04.06.2023

Почему ссылка на константу не считается константой с использованием признака типа is_const?
Я был довольно удивлен, что следующий код: #include <iostream> #include <type_traits> using namespace std; int main(int argc, char* argv[]) { cout << boolalpha << is_const<const float&>::value <<...
66 просмотров
schedule 11.03.2023