Size: a a a

2021 February 14

LK

Lev Khoroshansky in pro.cxx
Специализация просочится по другим инклюдам, с этим всё в порядке
источник

LK

Lev Khoroshansky in pro.cxx
Компилятор говорит следующее:
error: call to function 'GetAwaiter' that is neither visible in the template definition nor found by argument-dependent lookup
 auto awaiter = GetAwaiter(std::forward<Awaitable>(a));
                ^
note: in instantiation of function template specialization ‘Await<Future<void>>' requested here
 Await(time_keeper.After(d)).ExpectOk();
 ^
note: 'GetAwaiter' should be declared prior to the call site or in an associated namespace of one of its arguments
auto GetAwaiter(Future<T>&& f) -> detail::FutureAwaiter<T> {
источник

LK

Lev Khoroshansky in pro.cxx
Возникает ощущение, будто перегрузка не помогает
источник

AV

Aleksey Verkholat in pro.cxx
c++ 20 уже вышел официально?
источник

FO

FORTRAN ONE LOVE in pro.cxx
Aleksey Verkholat
c++ 20 уже вышел официально?
да.
источник

AV

Aleksey Verkholat in pro.cxx
спасибо
источник

LK

Lev Khoroshansky in pro.cxx
Lev Khoroshansky
Компилятор говорит следующее:
error: call to function 'GetAwaiter' that is neither visible in the template definition nor found by argument-dependent lookup
 auto awaiter = GetAwaiter(std::forward<Awaitable>(a));
                ^
note: in instantiation of function template specialization ‘Await<Future<void>>' requested here
 Await(time_keeper.After(d)).ExpectOk();
 ^
note: 'GetAwaiter' should be declared prior to the call site or in an associated namespace of one of its arguments
auto GetAwaiter(Future<T>&& f) -> detail::FutureAwaiter<T> {
Это если инклюдить сначала
Await(Future)
, а потом
GetAwaiter(Future)
источник

LK

Lev Khoroshansky in pro.cxx
В обратном порядке компилятор доволен
источник

LK

Lev Khoroshansky in pro.cxx
Lev Khoroshansky
Забыл упомянуть, что хотелось бы инклюдить объявление функции
GetAwaiter
, а не конкретную реализацию
Кажется, я не совсем правильно выразился: явно инклюдить специализацию проблем никаких нет, просто не хочется, чтобы порядок был важен
источник

AV

Aleksey Verkholat in pro.cxx
а модули тоже впихнули типа? их же выкинули до 23
источник

FO

FORTRAN ONE LOVE in pro.cxx
Aleksey Verkholat
а модули тоже впихнули типа? их же выкинули до 23
источник

AV

Aleksey Verkholat in pro.cxx
ну да вопрос последовал после того как зашел на эту страничку
источник

D

Dmitriy in pro.cxx
Разрешает ли Стандарт делать такое?
struct Tag {
 uint64_t tag1 : 48;
 uint64_t tag2 : 16;
};
Где-то в коде ниже:
Tag t;
...
auto val = *reinterpret_cast<uint64_t*>(&tag);
источник

AK

Alexey Kuznetsov in pro.cxx
Lev Khoroshansky
Кажется, я не совсем правильно выразился: явно инклюдить специализацию проблем никаких нет, просто не хочется, чтобы порядок был важен
Беда, в этом случае действительно через темплейтный враппер проще всего решать. Экстеншн методы в плюсы пока не завезли.
источник

АК

Александр Караев... in pro.cxx
Lev Khoroshansky
Кажется, я не совсем правильно выразился: явно инклюдить специализацию проблем никаких нет, просто не хочется, чтобы порядок был важен
Наверное, стоит взглянуть в сторону CPO, а пользовательские перегрузки уже делать в любом формате (а не пытаться перегрузить одну и ту же функцию)
источник

S

Stepan in pro.cxx
Dmitriy
Разрешает ли Стандарт делать такое?
struct Tag {
 uint64_t tag1 : 48;
 uint64_t tag2 : 16;
};
Где-то в коде ниже:
Tag t;
...
auto val = *reinterpret_cast<uint64_t*>(&tag);
Что ожидается увидеть в val?
источник

D

Dmitriy in pro.cxx
Stepan
Что ожидается увидеть в val?
tag 1 | (tag2 << 48)
источник

LK

Lev Khoroshansky in pro.cxx
Alexey Kuznetsov
Беда, в этом случае действительно через темплейтный враппер проще всего решать. Экстеншн методы в плюсы пока не завезли.
Что-то вроде
template <typename Awaitable, typename Awaiter>
struct Helper {
   auto GetAwaiter(Awaitable&& a) -> Awaiter;
};

?
источник

LK

Lev Khoroshansky in pro.cxx
Александр Караев
Наверное, стоит взглянуть в сторону CPO, а пользовательские перегрузки уже делать в любом формате (а не пытаться перегрузить одну и ту же функцию)
А это не будет оверкиллом?
источник

S

Stepan in pro.cxx
Dmitriy
tag 1 | (tag2 << 48)
Результат является таковым?
источник