Re: Специализация шаблона класса шаблонным параметром
От: wander  
Дата: 29.02.12 07:31
Оценка:
Здравствуйте, NikolayVoronetskiy, Вы писали:

NV> Искомое решение для функции выглядит так:


NV>
NV> template<class T> void Foo(){ std::cout << "class\n"; }
NV> template<template<class> class T> void Foo(){std::cout << "template<class>\n";
NV>

Я так понимаю в этом случае у тебя никакой специализации нет. Зато есть перегрузка.

NV> Задача в том, чтобы таким же образом специализировать шаблон класса, грубо говоря:

NV>
NV> template<class T> class Bar { static void print(){std::cout << "class\n";} };
NV> template<template <class> class T> class Bar { static void print(){std::cout << "template<class>\n";} };
NV>


ИМХО, не получится так. Если мы специализируем первый вариант (где передается тип T), то параметром в любом случае будет ожидаться тип. Если мы специализируем второй вариант (где передается шаблон), то параметром в любом случае будет ожидаться шаблон. Чтобы превратить шаблон в тип, нужно его инстанцировать. Иными словами аргументы шаблона в такой ситуации нужно будет тоже передать так или иначе.
avalon 1.0rc3 build 426, zlib 1.2.3
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.