Вопросы по теме '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 просмотров
schedule
04.03.2022
Вывод типа шаблона не работает?
Рассмотрим следующий пример.
#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 просмотров
schedule
15.04.2022
Тип Lamba не выводится шаблонной функцией или ключевым словом auto
У меня много проблем с пониманием этого. Я знаю, что мой компилятор (Visual Studio) знает, что такое «тип» лямбда, потому что иногда он показывает, что это лямбда, однако мой шаблон не выводит его, как и ключевое слово auto.
template <typename...
71 просмотров
schedule
22.06.2022
Вывод шаблона класса для указателя на тип данных
У меня есть следующий класс-оболочка:
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 просмотров
schedule
13.07.2022
Вывод типа выражения параметра шаблона
Как можно вывести тип выражения аргумента шаблона? Например, относительно следующего кода:
template< typename T >
class A
{
//....
};
template< typename T_1, typename T_2 >
class B
{
auto foo()
{
return A</* Type of...
85 просмотров
schedule
08.07.2022
Вывод типа шаблона при преобразовании из одного типа в другой
Я хочу написать простую оболочку для оператора 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 просмотров
schedule
25.05.2023
Вывод типа не работает с 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 просмотров
schedule
09.04.2023
Как заставить компилятор вывести аргумент шаблона класса?
Я новичок в шаблонах С++, и я (довольно безуспешно) пытаюсь заставить компилятор вывести аргумент имени типа шаблона при инициализации.
Вот мой код.
template <typename T>
class C
{
public:
T a;
C(T a) : a(a) {}...
528 просмотров
schedule
10.06.2023
вывод типа шаблона структуры из адреса члена
Я пишу библиотеку статического отражения для игрового движка (это личный проект в свободное время). Обратите внимание, что я использую С++ 17.
Вместо того, чтобы напрямую сохранять смещения членов класса, я сохраняю адрес члена, используя эту...
62 просмотров
schedule
03.01.2023
Почему вывод типа для 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