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

Невозможно создать экземпляр шаблона функции, который использует decltype для вывода типа возвращаемого значения, если он вызывается из лямбды?
Я пытаюсь использовать С++ 0x и, в частности, лямбда-выражение и decltype, чтобы упростить часть моего кода, используя компилятор MSVC10 RC. Я столкнулся со следующей очень странной проблемой: template <typename F> auto foo(F f) ->...
1694 просмотров
schedule 26.08.2022

Создание экземпляра определения функции в шаблоне, который использует decltype только в определенных обстоятельствах.
В качестве упражнения в понимании С++ 0x я пытаюсь создать класс С++, который обертывает указатель некоторого шаблонного типа: template <typename T> class Wrapper { T *t; /* ... */ }; Внутри класса Wrapper я хотел бы показать...
543 просмотров
schedule 28.04.2022

Получить тип возвращаемого значения функции-члена без объекта
У меня есть несколько классов, которые я не могу изменить. У каждого есть конструктор копирования, по крайней мере, еще один конструктор и функция foo() , которая возвращает какое-то значение. Я хочу создать шаблон класса, который может быть...
15131 просмотров
schedule 15.05.2024

Почему CLS () имеет разные значения в C ++ 11
VS2010 частично поддерживает C ++ 11. Я компилирую приведенный ниже код в VS2010 RTM. Я не понимаю, почему код CLS () анализируется по-разному. В строке «decltype (CLS ()) obj1;» CLS () обозначает сущность объекта класса. Но в строке «CLS obj2...
317 просмотров
schedule 10.05.2022

`decltype`: возвращаемый тип функции `T` преобразуется в `T&` для пользовательских типов (VS2010)
РЕДАКТИРОВАТЬ: GCC отлично компилирует, это проблема VS2010. Спасибо, что указали мне на ideone.com! При попытке скомпилировать следующее (VS2010): #include <iostream> template< typename PF01, typename PF02 > inline auto FCall01(...
321 просмотров
schedule 07.03.2023

sfinae для функции-члена, определенной вне тела класса
Что-то вроде продолжения моего предыдущего вопроса . У меня есть набор функций, которые формируют цепочку зависимостей sfinae (пусть обозначение «A -> B» означает, что существование A зависит от существования B): S::f_base -> S::f ->...
479 просмотров
schedule 21.01.2023

Можно ли использовать decltype С++ 11 для создания typedef для указателя функции из существующей функции?
Дано struct A { int foo(double a, std::string& b) const; }; Я могу создать указатель функции-члена следующим образом: typedef int (A::*PFN_FOO)(double, std::string&) const; Достаточно просто, за исключением того, что...
19931 просмотров
schedule 11.05.2022

Является ли declval‹T›() таким же, как (*(T*)nullptr)?
Является ли declval<T>() просто заменой старого трюка (*(T*)NULL) для получения экземпляра T в decltype, не беспокоясь о конструкторе T? Вот пример кода: struct A {}; struct B { A a; }; typedef decltype((*(B*)nullptr).a) T1;...
3011 просмотров
schedule 17.03.2023

Синтаксис возвращаемого значения, перегружающий константу, а не константную функцию
У меня проблема с обеспечением правильной перегрузки для константных и неконстантных функций получения с новым синтаксисом возвращаемого значения. В моем классе PhysicalNode я определил функцию получения с новым синтаксисом возвращаемого...
383 просмотров
schedule 14.11.2022

SFINAE и decltype(авто)
Если шаблон функции возвращает decltype(auto) (или другой спецификатор типа, использующий auto ), но оператор return будет некорректным, получится ли результат SFINAE? Считается ли оператор return непосредственным контекстом сигнатуры функции?...
1199 просмотров
schedule 22.03.2023

Каков тип decltype(this) в C++?
Очевидно, clang считает, что decltype(this) является указателем на класс с указанием cv, в то время как gcc считает, что это константная ссылка на указатель на класс с указанием cv. GCC считает, что decltype(&*this) является указателем на...
7864 просмотров
schedule 04.11.2022

Переопределяет ли заполнитель в завершающем возвращаемом типе начальный заполнитель?
g ++, похоже, принимает любую комбинацию auto и decltype(auto) в качестве начального и конечного типов возврата: int a; auto f() { return (a); } // int auto g() -> auto { return (a); } // int...
369 просмотров

Можете ли вы объявить переменную-член с decltype в объектной функции?
struct Example { boost::tokenizer<boost::char_separator<char>> tokens; decltype (tokens.begin()) i; }; В Visual Studio 2013 я получаю сообщение об ошибке компилятора C2228: слева от «.begin» должен быть class/struct/union....
1157 просмотров
schedule 08.04.2022

Как определить тип возвращаемого значения функции-члена C ++ 11
Я пытаюсь определить возвращаемый тип различных функций-членов C ++. Я понимаю, что для этого можно использовать decltype и std :: declval, но у меня проблемы с синтаксисом и поиском полезных примеров. TestCBClass ниже показывает пример немого...
14728 просмотров
schedule 18.07.2022

получить decltype аргумента шаблона
Я часто хочу получить decltype аргумента шаблона класса, чтобы использовать его в дальнейшем, например, в цикле, который я разделил и упростил, чтобы показать свою проблему: template <typename T> class Foo { public: T type; //This is my...
9211 просмотров
schedule 26.05.2022

Использование типа, зависящего от лямбда-функции, в качестве возвращаемого типа
Я хочу создать функцию, которая принимает лямбда в качестве параметра и возвращает объект, тип которого зависит от типа возвращаемого значения лямбда-функции. Чего я пытаюсь добиться, так это отсутствия явного параметра шаблона при создании...
872 просмотров
schedule 24.04.2024

decltype() захваченной переменной в лямбда: ошибка GCC и/или ошибка Clang?
Я проверил список ошибок GCC и список ошибок Clang и пока не вижу ничего подходящего. Эта ссылка на Wandbox показывает некоторый код C++11/C++14, выполняющий decltype(x) и decltype((x)) для различных виды x , захваченные...
345 просмотров
schedule 12.04.2023

При попытке сгенерировать указатель функции на перегруженную функцию с decltype, почему нет способа указать соответствующую перегрузку?
Я экспериментировал с функторами и непреднамеренно обнаружил кое-что в decltype , что показалось мне интересным: насколько я могу судить, нет никакого способа использовать его для генерации указателя на перегруженную функцию или предоставить ему...
357 просмотров
schedule 11.11.2023

Не должен ли decltype запускать компиляцию своего аргумента?
Поэтому я в недоумении, как это работает. Дано: template <typename T> int foo(T t) { t.foo(); } Кажется, что этот вызов должен завершиться ошибкой: decltype(foo(int{ 13 })) fail = 42; cout << fail << endl; Вместо...
538 просмотров

Является ли std :: declval ‹void› () допустимым выражением?
Насколько мне известно, я не могу объявить ссылку rvalue на void . В качестве примера приведу неверный код следующего вида: void f(void &&v) { } В [20.2.6 / 1] (объявление шаблона функции) у нас есть объявление для declval ,...
548 просмотров
schedule 12.05.2023