Описание тега ref-qualifier
Способ указать категорию значения указателя *this в функции-члене.
0
ответов
Условный условный реф
У меня есть CRTP-подобная иерархия, где производные классы могут быть реализованы немного по-разному, и для одного класса некоторые методы могут вызывать ссылки на rvalue, но для другого класса это было бы нежелательно: template <class TDerived&g…
20 июн '18 в 01:21
1
ответ
Почему void B::f() const & выбирается, когда B:: f вызывается временным объектом B?
#include <iostream> struct A { void f() const & { std::cout << "A::f()&" << std::endl; } void f() const && { std::cout << "A::f()&&" << std::endl; } }; struct B { void f() const & { std::cout…
26 окт '18 в 01:20
2
ответа
Ошибка создания шаблона для ref-квалифицированных членов
#include <iostream> using std::cout; template<typename T> class A{ public: template<typename U> void f(U const&) & ; template<typename U> void f(U const&) && ; }; template<typename T> template<typ…
08 июл '16 в 13:22
0
ответов
Могу ли я сделать ссылку легко для большего количества ресурсов?
Я разрабатываю игру. Я хотел бы, чтобы изображение отображалось на экране. Он должен заполнить экран на 90% по ширине (около 90%). Я не хочу, чтобы система изменяла размеры моих изображений (мне не нравится качество, которое это дает). Я хотел бы ра…
11 дек '14 в 10:29
0
ответов
Ссылка как последний символ в объявлении функции C++?
Глядя на Boost:: Необязательный необязательный заголовок шаблона класса, я сталкиваюсь с этим: T const& operator*() const& T& operator*() &; T&& operator*() &&; Для жизни я не могу найти этот синтаксис где-либо еще (с…
07 сен '16 в 01:43
2
ответа
Есть ли реальный вариант использования ссылочных квалификаторов функций?
Недавно я узнал о function's reference qualifiersнапример, struct foo { void bar() {} void bar1() & {} void bar2() && {} }; Где мне может понадобиться эта функция, есть ли реальный вариант использования этой функции языка?
19 янв '15 в 14:01
0
ответов
Идеальная переадресация и реф-квалификаторы для функций-членов
В C++11 появилась возможность переопределять функции-члены, а также совершенную пересылку. Но можем ли мы смешать их вместе? Рассмотрим этот (рабочий) пример: struct bar{ std::string str; void do_stuff() & { /* version 1 */ } void do_stuff() &am…
24 май '17 в 07:18
1
ответ
Целесообразно ли перегружать операторы с помощью ref-квалификатора, чтобы предотвратить временные задержки?
Мне просто пришло в голову, что operator+ & Co может работать на this для значений; т.е. дано класс Cможно сделать это: class C { // ... C operator-( const C& rhs ) const & { C result = *this; result -= rhs; return result; } C&& oper…
03 сен '15 в 17:02
6
ответов
Как повысить эффективность "str1 + str2 + str3 + ..." в C++14?
std::string Concatenate(const std::string& s1, const std::string& s2, const std::string& s3, const std::string& s4, const std::string& s5) { return s1 + s2 + s3 + s4 + s5; } По умолчанию, return s1 + s2 + s3 + s4 + s5; может быть…
09 сен '14 в 23:58
1
ответ
ref-квалификаторы для оператора присваивания стандартных типов библиотек
Мне было интересно, есть ли причина, по которой оператор присваивания стандартных типов не является lvalue ref-qualified? Ни один из них не является. Из-за этого мы можем написать такие вещи, как это: std::string{} = "42"; std::string s = "hello " +…
26 окт '18 в 11:31
1
ответ
Пересылка cv-ref-qualifier для функций-членов
Если нет других перегрузок (скажем, f(T &) или же f(volatile T &&)) (функции) шаблона функции template< typename T > f(T &&);, затем T && это так называемая экспедиционная ссылка, и T либо U, или же U & для неко…
30 сен '15 в 06:39
1
ответ
Могу ли я сделать ссылку на всю папку ресурсов?
Я хотел бы поддерживать много разных типов экранов с помощью доступных ресурсов. Но я могу использовать некоторые рисунки с одинаковым размером на нескольких экранах. Например: -xxhdpi-normal и -mdpi-xlarge могут использовать нарисованное изображени…
10 дек '14 в 19:46
1
ответ
Является ли хорошей практикой возвращать ссылку на r-значение из метода, уточненного по r-значению?
Как я вижу, общее правило - вообще не возвращать ссылки на r-значения из функций (за исключением редких особых случаев). Но как насчет методов класса? В стандартной библиотеке C++ есть пример возврата ссылки на r-значение из ref-квалифицированного м…
28 янв '18 в 16:14
2
ответа
Конечный тип возврата, declval и ссылочные квалификаторы: могут ли они работать вместе?
Рассмотрим следующий пример: #include <utility> struct A { void f() {} }; struct B { void f() & {} }; struct C { void f() && {} }; template<typename T> auto f() -> decltype(std::declval<T>().f()) {} int main() { f<…
06 ноя '16 в 21:47
1
ответ
r-значение ref-определителей для контейнеров STL
Почему элемент обращается к функциям-членам контейнеров STL, например std::array::operator[] или же std::vector::operator[] у вас нет перегрузок refvalififier rvalue? Конечно я могу сделать std::move(generate_vector()[10]), но мне любопытно, рассмат…
22 фев '18 в 09:31
1
ответ
Вызов перегруженной функцией ref-qualifiers функции неоднозначен
Я обнаружил странное поведение при компиляции моего кода с помощью G ++ (gcc 4.8.1 и MinGW 4.8.2 с -std=gnu++1y флаг). В духе SSCCE я выделил следующий фрагмент: struct C { template< typename X > auto f(X &&) const & { ; } template…
23 апр '14 в 15:34
1
ответ
Как убрать дублирование кода между похожими функциями-членами с квалификацией ref?
Аналогично Как удалить дублирование кода между похожими константными и неконстантными функциями-членами? Я хочу удалить дублирование кода между почти одинаковыми функциями-членами, за исключением квалификаторов ref. Допустим, у меня есть класс, кото…
20 июн '17 в 05:12
1
ответ
ref-квалифицированные функции-члены как аргументы шаблона?
Это хорошо компилируется в Clang 3.3: template <typename T> struct M; template <typename R, typename C, typename... A> struct M <R (C::*)(A...)> { }; template <typename R, typename C, typename... A> struct M <R (C::*)(A...…
11 сен '13 в 16:11
2
ответа
Почему аргумент шаблона не может быть выведен в этом контексте?
Может ли кто-нибудь объяснить, почему компиляторы (g ++, visual C++) не могут вывести аргумент шаблона в этом случае? struct MyClass { void Foo(int x)& {} void Foo(int x)&& {} }; template<typename T> void CallFoo(void(T::*func)(int…
05 янв '17 в 18:25
1
ответ
Явные ref-квалифицированные шаблоны операторов преобразования в действии
Учитывая следующие операторы преобразования struct A { template<typename T> explicit operator T&& () &&; template<typename T> explicit operator T& () &; template<typename T> explicit operator const T& ()…
30 апр '14 в 00:29