Форум программистов, компьютерный форум CyberForum.ru

Использование std::is_nothrow_default_constructible - C++

Восстановить пароль Регистрация
 
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
24.08.2014, 21:02     Использование std::is_nothrow_default_constructible #1
Здравствуйте!

Я использую базовый класс в качестве создателя интерфейса синглтона, и мне необходимо передать в качестве шаблонного аргумента сам класс-синглтон для этого. Я решил, что синглтон должен быть default constructible, и конструктор не должен выдавать исключений. Поэтому:
C++
1
2
3
4
5
class Singleton : Service<Singleton>
{
private:
    Singleton() noexcept;
}
Базовый класс:
C++
1
2
3
4
5
6
7
template<typename S>
class Service
{
public:
    static_assert(std::is_nothrow_default_constructible<S>::value,
    "message");
}
И получаю срабатывание static_assert, что удивляет.
Что я делаю не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.08.2014, 21:26     Использование std::is_nothrow_default_constructible #2
Цитата Сообщение от relationer Посмотреть сообщение
C++
1
private:
...
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
24.08.2014, 21:34  [ТС]     Использование std::is_nothrow_default_constructible #3
А в случае, если конструктор приватный, как проверить?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
25.08.2014, 05:19     Использование std::is_nothrow_default_constructible #4
Цитата Сообщение от relationer Посмотреть сообщение
А в случае, если конструктор приватный, как проверить?
Объекты класса с приватным конструктором в принципе нельзя создать, он по логике не может быть никаким constructible.
И да, я вижу, что это синглтон и он, скорее всего, будет использовать этот или другой приватный конструктор внутри себя же.
Yandex
Объявления
25.08.2014, 05:19     Использование std::is_nothrow_default_constructible
Ответ Создать тему
Опции темы

Текущее время: 08:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru