В boost :: pool не требуется никаких параметров шаблона - PullRequest
0 голосов
/ 22 февраля 2012

Объявление повышения :: плохое - это то, что выглядит следующим образом.

boost::pool<> Obj();

Мне любопытно, как вы можете создать шаблон класса, который не требует никаких параметров шаблона, а только <>?

Я попытался сделать это как boost :: pool в pool.hpp и poolfwd.hpp.

template<class T>
class Fakepool { };  // pool.hpp

template<class T = int>
class Fakepool;   // boost::pool's declaration in poolfwd.hpp 

int main()
{
    Fakepool<float> a;

    Fakepool<> a2; // Can't do this with only <>
}//main()

Заранее спасибо!

1 Ответ

2 голосов
/ 22 февраля 2012

Это то, что вы ищете?

template<class T = int>
class Fakepool { };

int main()
{
    Fakepool<float> a; // Use float

    Fakepool<> a2; // Default as int
}

Вы также можете сделать это (о чем я думаю).Ключевое слово здесь default template arguments.Однако в вашем примере вы определили класс до того, как вы его объявили, и это было проблемой.

template<class T = int>
class Fakepool; 

template<class T>
class Fakepool { }; 

int main()
{
    Fakepool<float> a;

    Fakepool<> a2;
}
...