Код: Выделить всё
class Foo
{
public:
Foo() = default;
};
int main() {
static_assert(std::is_default_constructible_v);
return 0;
}
< /code>
FooТеперь мой вопрос: возможно ли (и как) построить панель классов , которые наследуют от foo , есть некоторые Важная логика по умолчанию по умолчанию и подходит по умолчанию только в том случае, если она может по умолчанию, создавать foo .
Другими словами, можно сделать так, чтобы можно было сделать так, чтобы Следующий код проходит: < /p>
Код: Выделить всё
#include
class Foo
{
protected:
Foo() = default;
};
class Doo
{
protected:
Doo() = delete;
};
template
struct Bar : public T
{
// some implementation ...
Bar()
// some magical `requires` statement here ...
: T()
{
// some very important logic here!
};
};
int main() {
static_assert(std::is_default_constructible_v);
static_assert(!std::is_default_constructible_v);
return 0;
}
< /code>
[b]NOTE1:[/b] If protectednote2: эта проблема не имеет ничего общего с конструкторами, это может быть связано с любой функцией -членом. Я выбрал конструктор по умолчанию исключительно потому, что существует существующий тип признака std :: is_default_constructible_v .
Подробнее здесь: https://stackoverflow.com/questions/794 ... r-function
Мобильная версия