enum PieceType
{
NoPieceType, Pawn, Knight, Bishop, Rook, Queen, King,
AllPieces = 0,
PieceType_N = 8
};
template<PieceType T> Score OutpostEvaluator()
{
static_assert(T == Bishop || T == Knight); // Doesn't compile.....
}
我想确保模板函数只能用于某些类型的枚举值,在我这里是 Bishop 和 Knight。 std::is_scalar()、std::is_enum() 和其他类型支持在我的情况下似乎不起作用。如何实现?
最佳答案
static_assert
的语法,来自 http://en.cppreference.com/w/cpp/language/static_assert .
static_assert ( bool_constexpr , message );
您需要提供一条消息。像这样的东西:
static_assert(T == Bishop || T == Knight, "Expected Bishop or Knight");
关于c++ - 如何静态断言模板枚举类型? (C++11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835241/