При попытке применить конструкцию на основе политик, я застрял на этом (упрощенный):Как сделать политику диктуемой переменной-члена?
template <class TPrintPolicy, typename T>
struct A : private TPrintPolicy {
using TPrintPolicy::Print;
T t;
void Foo() {
Print(t);
}
};
struct IntPolicy {
void Print(int n) {
std::cout << n << std::endl;
}
};
int main(int argc, char* argv[]) {
A<IntPolicy, int> a;
a.Foo();
return 0;
}
И вот вопрос: Как я должен переопределить класс А так, чтобы можно было бы обеспечить только политику параметр шаблона A, чтобы это сделать вывод Т сама по себе, как это:
A<IntPolicy> a;
Предпочтение будут определение политики не должно быть гораздо сложнее, чем сейчас. Есть идеи?
EDIT:
Я забыл упомянуть, что я не хочу, чтобы политика экспортировала typedef. Это, конечно, легкое решение, но не может ли вы сделать тип T сам по себе?
Unrelated: '' шаблон просто наследство синтаксис '' шаблон и нет никакой разницы между ними (и имяТипом является предпочтительным). –
@PiotrLegnica: Спасибо, приятно знать! – dnlgl
В очень конкретном случае существует разница между классом и typename, см. [This] (http://stackoverflow.com/questions/2023977/c-difference-of-keywords-typename-and-class-in-templates) – Errata