2010-06-23 5 views
4

Je cherche à aider les utilisateurs de mon code basé sur un modèle en utilisant BOOST_STATIC_ASSERT pour leur faire savoir qu'ils ont utilisé un type incompatible avec un message d'erreur de compilation plus simple que le monstre produit actuellement avec un type incompatible.Spécification du modèle C++ des types de modèles

L'exemple est un peu trop complexe pour se reproduire ici, mais nous espérons que cela va capturer l'essence de ce que je veux:

Ma question est de savoir comment formater cette dernière ligne, un « modèle de modèle »?

template <typename P1, int P2, typename P3> 
class InterestingType 

{ 
} 

template<typename T> 
struct is_interesting_type{ 
static const bool value = false; 
}; 

template<template<typename,int,typename> typename InterestingType> //No idea how to format this.. 
struct is_interesting_type{ 
static const bool value = true; 
}; 

Répondre

3

Modifier le code à

template <typename P1, int P2, typename P3> 
struct is_interesting_type<InterestingType<P1, P2, P3> >{ 
static const bool value = true; 
}; 
+0

Excellent, merci. J'ai perdu quelques heures sur ça ... juste une de ces choses. Ça a l'air si facile maintenant :-) –

Questions connexes