Результаты поиска по запросу "decltype"

1 ответ

 такое лямбда-выражение?

я правильно понялаэтот ответ [https://stackoverflow.com/a/44701336/4324224]и ссылка на стандартный раздел[Dcl.type.auto.deduct-5] [http://eel.is/c++draft/dcl.spec.auto#dcl.type.auto.deduct-5], код: decltype(auto) a = e;всегда ...

6 ответов

Да, у него та же проблема.

ющий код: struct A { int f(int); auto g(int x) -> decltype(f(x)); };Не в состоянии скомпилировать с ошибкой: error: cannot call member function 'int B::f(int)' without objectЕсли я изменю это на: struct A { int f(int); auto g(int x) -> ...

1 ответ

@Aconcagua - Большое спасибо. Я ужасно неэффективен с багзиллой GCC.

ытался скомпилировать этот код C ++ под GCC 8.2 с различными параметрами, и он всегда успешно выполняется, не выдает предупреждений и выводовtrue: int && a = 123; decltype(auto) b = a; std::cout << std::boolalpha << std::is_same<decltype(b), ...

ТОП публикаций

1 ответ

Visual Studio 2010 также страдает от этой проблемы. Хороший обходной путь.

им классом, как Foo: struct Foo { static const int i = 9; };Я считаю, что GCC 4.5 отклонит следующее Foo f; int x = decltype(f)::i;Это будет работать, если я использую промежуточный typedef, такой как: typedef decltype(f) ftype; int x = ...

2 ответа

Хороший улов! Я изменил заголовок в ответе. Спасибо!

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

5 ответов

Я только исправил код ОП, как он и просил. Вероятно, это просто фрагмент файла большего размера, который объясняет отсутствующие включения, и он, вероятно, использует пространство имен std.

олько) устаревшийстатья [http://blog.think-async.com/2009/07/user-friendly-compile-errors-for.html] исследует способы использованияdecltype вместе с SFINAE, чтобы определить, поддерживает ли тип определенные операторы, такие как== или же<. Вот ...

5 ответов

 результаты в типе

казаноответ [https://stackoverflow.com/q/5877810].) Учитывая N3290, §7.1.6.2p4, где элементы списка ненумерованы, но пронумерованы здесь для нашего удобства: Тип, обозначаемый decltype (e), определяется следующим образом: если e - это не ...

1 ответ

).

аю шаблонный класс, который является оберткой для любого итератора. Я делаю оператор * таким образом: template <typename T> class MyIterator { public: //... decltype(*T()) operator*() { //... } }Я даю decltype вызов оператора * класса T, и он ...

1 ответ

 в конце типа возврата, но я не был уверен, были ли какие-либо из предложений там действительно приняты. Спасибо за хороший ответ. К счастью (согласно комментарию Cubby), GCC, кажется, хорошо справляется с этой задачей, поскольку версия 4.7 уже учитывает это изменение.

довольствием экспериментировал с новыми типами конечного возврата, где столкнулся с проблемой этого (упрощенного) кода #include <list> class MyContainer{ std::list<int> ints; auto begin( ) -> decltype(ints.begin()) { return ints.begin(); } auto ...

1 ответ

Использование decltype для приведения этого к const

Я пытаюсь решить проблему, в которойdecltype будет сильно упрощать вещи, но я сталкиваюсь с проблемой, используяdecltype на*this и добавивconst Классификатор. Пример кода ниже демонстрирует проблему. #include <iostream> struct Foo { void bar() { ...