Это легальный C++?
template <typename T, template <typename T> class>
struct S { };
Clang (3.7.1) отвергает его, жалуясь, что второй T
затмевает первый T
. GCC, кажется, не заботится об этом, и я думаю, что это разумно. Я думаю, что в параметре шаблона шаблона имеет значение только количество параметров.
- http://goo.gl/51bHVG (gcc.godbolt.org)
T
дважды? если вы хотите использоватьT
во втором шаблоне, вы можете написатьtemplate <class T, template <class S=T> class>
- person David Haim   schedule 02.03.2016template <class T, template <class S> class>
? - person nodakai   schedule 02.03.2016NULL
наnullptr
? - person nodakai   schedule 02.03.2016template <template T, template <class S=T> class C>
мы можем заменитьC<T>
наC<>
, как если быC
было определено с параметром шаблона по умолчанию... Это может быть удобным в некоторых случаях, но я не уверен, что буду использовать его часто. В любом случае большое спасибо. - person nodakai   schedule 02.03.2016