1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
/* !!! C++11 inside !!! */
struct EntityTag{};
struct ValueTag{};
struct OthelloTag{
using gameTag = ValueTag;
};
struct ChessTag{
using gameTag = EntityTag;
};
template <typename BoardType>
class Board{
public:
using boardTag = BoardType::gameTag;
template <typename T = boardTag,
typename = typename
<std::enable_if<std::is_same<T,ValueTag>::value>::type>
void foo(T const & /* , ... */ ){
}
template <typename T = boardTag,
typename = typename
<std::enable_if<std::is_same<T,EntityTag>::value>::type>
void foo(T const & /* , ... */ ){
}
/* ... */
} |
Partager