Size: a a a

2020 May 05

CD

Constantine Drozdov in pro.cxx
Dollar Føølish
Про делитер непонятно
shared_ptr использует полиморфное удаление, он должен удалиться по incomplete type и не имеет возможности проверить enable_shared_from_this в своем деструкторе
источник

DF

Dollar Føølish in pro.cxx
А, понял
источник

DF

Dollar Føølish in pro.cxx
Спасибо
источник

OS

Oleksandr Senkovych in pro.cxx
Вот у меня такой код есть:
#include <memory>

struct Base
{
   protected:
   Base(int) {}
}

struct Derived: Base
{
   using Base::Base;
}
 
int main()
{
   auto ptr = std::make_unique<Derived>(123);
}

GCC ругается что конструктор protected. Но разве он не становится public когда я делаю using Base::Base?
источник

v

vehlwn in pro.cxx
Oleksandr Senkovych
Вот у меня такой код есть:
#include <memory>

struct Base
{
   protected:
   Base(int) {}
}

struct Derived: Base
{
   using Base::Base;
}
 
int main()
{
   auto ptr = std::make_unique<Derived>(123);
}

GCC ругается что конструктор protected. Но разве он не становится public когда я делаю using Base::Base?
Да.
источник

OS

Oleksandr Senkovych in pro.cxx
источник

OS

Oleksandr Senkovych in pro.cxx
Clang то же самое 😐
источник

IA

Igor Akhmetov in pro.cxx
Oleksandr Senkovych
Clang то же самое 😐
Ну значит скорее всего не становится, правда?
источник

v

vehlwn in pro.cxx
vehlwn
Да.
Что-то не получается.
struct Base {
   protected:
   Base(int) {}
   void f(){}
};
struct Derived: public Base {
public:
   using Base::Base;
   using Base::f;
};
static_assert(std::is_same_v<void
   , std::void_t<decltype(std::declval<Derived>().f())>>
);
static_assert(std::is_constructible_v<Derived, int>);
источник

OS

Oleksandr Senkovych in pro.cxx
Нашел строку в стандарте
источник

OS

Oleksandr Senkovych in pro.cxx
Using-declaratorthat names a constructor does not create a synonym; instead, the additional constructors are accessible if they would be accessible when used to construct an object of the corresponding base class
источник

v

vehlwn in pro.cxx
Oleksandr Senkovych
Using-declaratorthat names a constructor does not create a synonym; instead, the additional constructors are accessible if they would be accessible when used to construct an object of the corresponding base class
Почему конструкторы не фунции?
источник

OS

Oleksandr Senkovych in pro.cxx
То есть поскольку базовый конструктор не доступен, то этот дополнительный конструктор не создается, поэтому вызывается конструктор базового класса напрямую.
источник

OS

Oleksandr Senkovych in pro.cxx
А он protected
источник

т

третий охранник ПЖ... in pro.cxx
товарищи, а на сегодняшний день появилось что-нибудь не хуже qt и wxWidgets  для создания gui (linux, windows) в плане использования в C++ проектах?
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alex
А как узнать текущий статус пропозала? В данном случае - этого: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0593r6.html
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alexander Malkov
а случайно, он не указан ли в этом документе?
Published Proposal, 2020-02-14
Это дата публикации
источник

A

Alex in pro.cxx
Спасибо!
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alexander Malkov
нашел этот же документ, но с другим статусом
Draft Proposal, 2019-10-06
Старая ревизия
источник

IA

Igor Akhmetov in pro.cxx
vehlwn
Почему конструкторы не фунции?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4429.html After some discussion in CWG, it is believed that these issues can all be resolved by changing the meaning of an inheriting constructor declaration from declaring a set of new constructors, to making a set of base class constructors visible in a derived class as if they were derived class constructors. (When such a constructor is used, the additional derived class subobjects will also be implicitly constructed as if by a defaulted default constructor.) Put another way: this proposal makes inheriting a constructor act just like inheriting any other base class member, to the extent possible.
источник