Вопросы по теме 'typetraits'
Характеристики типа C ++ для проверки наличия в классе оператора / члена
Возможный дубликат: Можно ли написать шаблон C ++ для проверки существования функции?
Можно ли использовать черты типа повышения или какой-либо другой механизм, чтобы проверить, имеет ли конкретный параметр шаблона оператор / функцию,...
26027 просмотров
schedule
08.03.2022
Почему type_traits реализуются со специализированными структурами шаблонов вместо constexpr?
Есть ли причина, по которой стандарт определяет их как шаблон struct s вместо простого логического constexpr ?
В дополнительном вопросе, на который, вероятно, будет дан хороший ответ на основной вопрос, как можно было бы делать enable_if вещи с...
2355 просмотров
schedule
27.09.2023
Проверьте, объявлен ли объект 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 просмотров
schedule
02.11.2022
Поддержка пакета параметров std :: is_base_of ()
Есть ли возможность иметь статическое утверждение, реализует ли тип, предоставленный в качестве аргумента шаблона, все типы, перечисленные в пакете параметров, т.е. с учетом пакета параметров std :: is_base_of ()?
template <typename Type,...
1284 просмотров
schedule
14.03.2022
Неверный результат для 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 просмотров
schedule
31.05.2022
Когда можно сравнить два указателя?
Существует так много вопросов о сравнении двух указателей, но я не нашел ни одного вопроса о том, подходят ли два типа для сравнения указателей. Данный
A* a;
B* b;
Я хочу знать, действительно ли выражение a @ b , где @ является одним из...
143 просмотров
schedule
18.05.2022
Как специализировать класс свойств для T, а также для всех потомков T
Я хочу, чтобы класс свойств применялся к типу, а также к его потомкам. Это возможно?
template <typename E>
struct Garble {
};
template <typename T>
struct wooble_traits;
template <typename E>
struct...
258 просмотров
schedule
02.09.2022
Введите черты, чтобы получить результат продвижения от оператора
Правила неявного преобразования типов в операторах 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