Вопросы по теме 'type-deduction'

Получить тип неявного преобразования
Как я могу получить возвращаемый тип неявного преобразования объекта? struct Bar { operator int() const { return 0; } }; // std::result_of<Bar>::type value; ??? // std::result_of<Bar::operator ??? >::type value; Я мог бы...
116 просмотров
schedule 09.09.2021

Почему этот вывод типа C ++ разрешен
Я столкнулся с производственным кодом, который заставил меня задуматься, зачем он компилировался. Я свел это к следующему. Я скомпилировал его с помощью gcc 6.4.1 и 8.1 вместе с парой других онлайн-компиляторов, и все они не сообщают об ошибках....
148 просмотров
schedule 14.11.2021

Параметры функции шаблона Variadic и вывод ссылочного типа
Я упускаю кое-что очень фундаментальное о выводе типов здесь: Я пытаюсь написать функцию-оболочку, которая вызывает функцию записи с nullptr для получения требуемой длины, затем изменяет размер буфера, а затем снова вызывает функцию, теперь с...
60 просмотров
schedule 09.10.2021

Существуют ли какие-либо реалистичные варианты использования переменных `decltype (auto)`?
Как из моего личного опыта, так и из ответов на вопросы, подобные Каковы некоторые виды использования decltype (auto )? Я могу найти множество ценных примеров использования decltype(auto) в качестве заполнителя типа возвращаемого значения...
671 просмотров
schedule 12.10.2021

Получение типа переменной-члена шаблонного класса из типа члена шаблона
Название может показаться немного запутанным, поэтому вот более подробное объяснение: У меня есть шаблонный класс, в котором вектор является переменной-членом. Аргумент шаблона - это структура (или класс), которая будет иметь одну определенную...
560 просмотров
schedule 28.10.2021

Почему auto x{3} выводит список initializer_list?
Я люблю auto в С++ 11. Это замечательно. Но у него есть одно несоответствие, которое действительно действует мне на нервы, потому что я все время спотыкаюсь об него: int i = 3; // i is an int with value 3 int i = int{3}; // i is an int...
6071 просмотров

Вывод типа шаблона не работает?
Рассмотрим следующий пример. #include <type_traits> #include <iostream> using namespace std; template <typename T_> using Integral = typename std::enable_if<std::is_integral<T_>::value,T_>::type; template...
286 просмотров

Тип Lamba не выводится шаблонной функцией или ключевым словом auto
У меня много проблем с пониманием этого. Я знаю, что мой компилятор (Visual Studio) знает, что такое «тип» лямбда, потому что иногда он показывает, что это лямбда, однако мой шаблон не выводит его, как и ключевое слово auto. template <typename...
71 просмотров

Вывод шаблона класса для указателя на тип данных
У меня есть следующий класс-оболочка: template <typename T> class Remap { public: Remap(T *data, int *remap) : data(data), remap(remap){}; T &operator[](std::size_t idx) const { return data[remap[idx]]; } private: T...
299 просмотров
schedule 04.07.2022

Почему `typename` по-прежнему необходимо, даже если тип шаблона объявлен как `class`?
#include <type_traits> using namespace std; template<class T> struct IsCharType { enum { value = false }; }; template<> struct IsCharType<char> { enum { value = true }; }; template<>...
316 просмотров

Вывод типа выражения параметра шаблона
Как можно вывести тип выражения аргумента шаблона? Например, относительно следующего кода: template< typename T > class A { //.... }; template< typename T_1, typename T_2 > class B { auto foo() { return A</* Type of...
85 просмотров

Вывод типа шаблона при преобразовании из одного типа в другой
Я хочу написать простую оболочку для оператора static_cast. Моя первая попытка сделать то же самое, как показано ниже: template <typename ForConvert, typename ToConvert> ToConvert Convert(ForConvert val) { return...
306 просмотров
schedule 09.05.2023

Специализация функции-члена шаблона С++ на основе значения параметра
Я пытаюсь упростить код С++ в довольно большом старом проекте С++, и следующий простой пример поможет мне применить шаблон к коду, с которым я работаю. Код довольно большой, и я упростил его до основной проблемы. Я хотел бы написать код шаблона...
755 просмотров
schedule 20.06.2023

недопустимая инициализация неконстантной ссылки из rvalue
Итак, у меня есть следующая функция: void scan(std::istream& is, Handler& h); Я хочу называть это по-разному, например: scan(std::cin, Handler()); scan(std::ifstream("myfile"), myhandler); Компилятор жалуется на то, что...
894 просмотров

Вывод типа не работает с std::function
У меня следующая проблема. Когда я пытаюсь скомпилировать следующий код template< typename T > T func( T t) { return t; } template< size_t N, typename T > void foo( std::function< T(T) > func ) { // ... } int main() {...
146 просмотров
schedule 22.11.2022

Аргумент лямбда-функции + улучшение вывода
Я создал эту шаблонную функцию для двойного цикла for, который должен выполняться много раз и раньше выполнялся с помощью макроса: template <typename TYPE_OF_ENTITY, typename LAMBDA_FUNC> void foreach_t(list faces, LAMBDA_FUNC func) {...
93 просмотров
schedule 20.07.2023

Невыведенный контекст, такой как «boost::mpl::identity‹T›::type» в стандартной библиотеке?
Рассмотрим следующий пример, который я откопал здесь, в StackOverflow . template<typename T, typename Pred> T const & clamp ( T const& val, typename boost::mpl::identity<T>::type const & lo, typename...
63 просмотров

Как заставить компилятор вывести аргумент шаблона класса?
Я новичок в шаблонах С++, и я (довольно безуспешно) пытаюсь заставить компилятор вывести аргумент имени типа шаблона при инициализации. Вот мой код. template <typename T> class C { public: T a; C(T a) : a(a) {}...
528 просмотров
schedule 10.06.2023

вывод типа шаблона структуры из адреса члена
Я пишу библиотеку статического отражения для игрового движка (это личный проект в свободное время). Обратите внимание, что я использую С++ 17. Вместо того, чтобы напрямую сохранять смещения членов класса, я сохраняю адрес члена, используя эту...
62 просмотров

Почему вывод типа для std::endl не работает?
В следующем коде: #include <iostream> auto& print = std::cout; // Type deduction for std::cout works auto& end = std::endl; // But the std::endl is exception here int main(void) { print << "Hello" << end;...
116 просмотров
schedule 14.10.2022