Предположим, у меня есть такой код:
template<class T, T initial_t> class Bar {
// something
}
А затем попробуйте использовать его следующим образом:
Bar<Foo*, NULL> foo_and_bar_whatever_it_means_;
GCC выручает с ошибкой (в строке выше):
не удалось преобразовать аргумент шаблона «0» в «Foo*»
Я нашел эту тему: http://gcc.gnu.org/ml/gcc-help/2007-11/msg00066.html, но в этом случае я должен использовать NULL (хорошо, возможно, я мог бы провести рефакторинг, но это было бы непросто; есть предложения?). Я попытался решить проблему, создав переменную со значением NULL, но GCC по-прежнему жалуется, что я передаю переменную, а не адрес переменной в качестве аргумента шаблона. И ссылка на переменную, инициализированную ctor по умолчанию, не будет такой же, как NULL.