Я пытаюсь использовать C++ 0x, и в особенности лямбда-выражение и decltype для упрощения части моего кода, с помощью компилятора MSVC10 RC. Я столкнулся со следующей очень нечетной проблемой: шаблон <...
Я испытываю некоторые затруднения при понимании потребности в станд.:: result_of в C++ 0x. Если я понял правильно, result_of используется для получения получающегося типа вызова функционального объекта с определенными типами...
В моем классе есть член: std :: vector memory_; Теперь я хотел бы, чтобы fnc возвращал то, что находится в первом элементе памяти, но я не хочу указывать std :: string в качестве возврата ...
Я читал C ++ Primer и не мог понять, когда выражение дает тип объекта и когда оно дает ссылочный тип для объекта. Я цитирую из книги: Когда мы подаем заявку ...
В этом ответе есть фрагмент кода, подобный этому :template auto f (std ::vector v, F fun)-> decltype (bool (fun (v[0])), пустота())
{ //... } Он действительно компилируется и...
(Prompted by an answer.) Given N3290, §7.1.6.2p4, where the list items are unnumbered, but numbered here for our convenience: The type denoted by decltype(e) is defined as follows: if e is ...
Обратите внимание, что я использую std :: thread только для того, чтобы получить читаемые типы ошибок: int main () {const int * first; использование deref = decltype (* сначала); std :: thread s = std :: remove_const :: type {} ...
У меня есть несколько классов, которые я не могу изменить . У каждого есть конструктор копирования, по крайней мере, еще один конструктор и функция foo (), которая возвращает некоторое значение. Я хочу создать шаблон класса, который может ...
Я не смог найти хорошее объяснение decltype. Пожалуйста, скажите мне, как начинающему программисту, что он делает и почему это полезно. Например, я читаю книгу, в которой задано следующее ...
Я хочу получить тип функции и создать ее std :: vector. Например, у меня есть int foo (int a [], int n) {return 1; } int bar (int a [], int n) {return 2; } и вектор функций вроде ...
Является ли auto x = initializer; эквивалент decltype (инициализатор) x = инициализатор; или decltype ((инициализатор)) x = инициализатор; или ни то, ни другое?
Допустим, у меня есть объект некоторых классов контейнеров stl obj. Я могу определить другой объект того же типа следующим образом: decltype (obj) obj2; Но я не могу объявить итератор для контейнера таким образом: decltype (obj) ...
Данная структура A {int foo (double a, std :: string & amp; b) const; }; Я могу создать указатель на функцию-член следующим образом: typedef int (A :: * PFN_FOO) (double, std :: string & amp;) const; Достаточно просто, ...
Я делаю шаблонный класс, который является оболочкой для любого итератора. Я делаю оператор * таким образом: template
class MyIterator {
public: // ... decltype (* T ()) operator * () ...
Есть ли способ сравнить результат decltype в С++ 11? Другими словами, почему этот код недействителен :template void func (T& t, U& u ){ if (decltype (t )==...
Пример (отлично компилируется) struct A
{ недействительным f () {}; auto g() -> decltype(f()) {} }; Вопрос Если я добавлю указатель this внутрь decltype (т.е. decltype(this->f())), я получу следующее...
Информация: В настоящее время я пытаюсь изучить метапрограммирование шаблонов (следуя этой книге). Один полезный пример, который они приводят, касается размерного анализа. Я реализовал это как в книге, и все было...
Предположим, у меня есть такой класс: class Foo
{ std::vector бар; public: std::vector& get_bar() { return bar; }
}; а позже мне нужна еще одна переменная где-то еще...
структура X{}; шаблон<класс T>
decltype(X() == int()) f(T const&){ return true; } int main(void) { X x; е(х);
} Почему, только почему? Нигде не определен оператор ==! Я очень хочу...
Я знаю, что это было невозможно в C++03, но я надеюсь, что есть какое-то новое вуду, позволяющее мне это сделать. См. ниже: шаблон <класс T>
структура связующего
{ template
Как получить возвращаемый тип функции-члена в следующем примере? шаблон <геттер имени типа>
class MyClass { typedef decltype (mygetter.get()) got_t; ...
}; Проблема, связанная с...
Почему класс не может иметь тип decl в списке наследования? Например, я ожидал бы, что следующий код будет наследовать A от RType, но в G ++ 4.6.1 (с использованием -std = c ++ 0x) это не так ...
У меня есть: int foo (int x) {вернуть x + 1; } struct Bar {decltype (foo) оператор ();
}; int main () {Бар бар; printf ("% d \ n", бар (6));
} что приводит к слегка пугающему сообщению об ошибке компилятора ...
Мне нужно получить тип, который был предоставлен при создании экземпляра шаблона. Рассмотрим следующий пример: template struct Foo
{typedef T TUnderlying;
}; static Foo ...
Если у нас есть следующее: template
struct B {T data;
} struct A {int data_array [100];
} int main ()
{A x; const A x_const; авто y1 = f (A ()); авто y2 = f (x); auto y3 = ...