Как иметь статические элементы данных только в библиотеке заголовка -?

Каков наилучший способ иметь статический член в классе шаблонной библиотеки, отличном от -, без возложения бремени определения члена на пользователя класса?

Скажем, я хочу предоставить этот класс:

class i_want_a_static_member
{
    static expensive_resource static_resource_;

public:
    void foo()
    {
        static_resource_.bar();
    }
};

Тогда пользователь класса не должен забыть где-нибудь определить статический член (как уже ответилимногораз):

// this must be done somewhere in a translation unit
expensive_resource i_want_a_static_member::static_resource_;

У меня есть ответ ниже, но у него есть некоторые недостатки. Есть ли лучшие и/или более элегантные решения?

45
задан Community 23 May 2017 в 12:02
поделиться