Согласно документации std::weak_ptr
можно построить constexpr
weak_ptr
:Построение constexpr станд :: weak_ptr
#include <memory>
constexpr weak_ptr<int> foo{};
Однако, пытаясь это с лязгом выдает ошибку компиляции, жалуясь, что переменная constexpr не может иметь не буквальный тип 'const std::weak_ptr<int>
', потому что weak_ptr<int>
имеет предоставленный пользователем деструктор. (что есть, смотря на заголовки libC++)
Вопрос в том, является ли это ошибкой libC++, или constexpr
weak_ptr
просто не имеет смысла, а конструктор по умолчанию constexpr является ошибкой? Могу ли я ожидать, что это сработает в будущем?
Деструктора 'weak_ptr' отвечает за открепление (от' shared_ptr' блока управления, который является то, что 'weak_ptr' висит на), так что я не думаю, что это может быть 'constexpr'. –
Просьба ссылаться на документацию, на которую вы ссылаетесь, или ссылаться на нее. –
Я вижу в C++ 14 (окончательный проект N3290), что конструктор по умолчанию - 'constexpr'. Это меня озадачивает. –