Обычно, когда вам нужен определенный элемент в шаблоне, вы должны заставить пользователей шаблона применять его, даже если он для них не имеет смысла.Типичными примерами являются stl set
и map
, где вам нужно определить operator <
.
. Есть много (правильных) способов, которыми вы можете делать то, что хотите, но все они предполагают, что пользователь требуетв шаблоне должна быть определенная переменная-член или функция.
У вас также может быть два шаблона: один для тех, у кого есть m_pScience
, и другой для тех, у кого его нет, но я не рекомендую этого.Таким образом, вы всегда должны быть уверены, что код между двумя шаблонами согласован.