LINUX.ORG.RU

Можно ли запретить воспринимать 0 как nullptr, если объявлен конструктор с nullptr_t?

 


1

3

Можно ли запретить воспринимать 0 как nullptr в следующей ситуации:

struct A {
    A(std::nullptr_t) {}
};

A a = 0; // должно ругаться при компиляции
A b = nullptr; // верно

Вариант с explicit не предлагать - с ним будет требоваться дописывать a = A(nullptr)



Последнее исправление: victor79 (всего исправлений: 1)

Можно

struct A {
    A(std::nullptr_t) {}
    A(int)=delete;
};



int main()
{
A a = 0; // должно ругаться при компиляции
A b = nullptr; // верно
}
 In function 'int main()':
14:7: error: use of deleted function 'A::A(int)' 
7:5: note: declared here
fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
A(int) = delete;
anonymous
()

А я бы использовал вариант с explicit, т.к. запись a = A(nullptr) более очевидна чем просто присваивание nullptr.

rumgot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.