相关疑难解决方法(0)

专门化一个类模板构造函数

我正在搞乱模板特化,我遇到了一个问题,试图根据使用的策略来专门构建构造函数.这是我试图开始工作的代码.

#include <cstdlib>
#include <ctime>

class DiePolicies {
public:
 class RollOnConstruction { };
 class CallMethod { };
};

#include <boost/static_assert.hpp>
#include <boost/type_traits/is_same.hpp>
template<unsigned sides = 6, typename RollPolicy = DiePolicies::RollOnConstruction>
class Die {
 // policy type check
 BOOST_STATIC_ASSERT(( boost::is_same<RollPolicy, DiePolicies::RollOnConstruction>::value ||
        boost::is_same<RollPolicy, DiePolicies::CallMethod>::value ));
 unsigned m_die;
 unsigned random() { return rand() % sides; }
public:
 Die();
 void roll() { m_die = random(); }
 operator unsigned () { return m_die + 1; }
};

template<unsigned sides>
Die<sides, DiePolicies::RollOnConstruction>::Die() : m_die(random()) { …
Run Code Online (Sandbox Code Playgroud)

c++ templates partial-specialization specialization dice

2
推荐指数
1
解决办法
1566
查看次数