template <typename>
struct B
{
constexpr static int T = 5;
};
template <int T>
struct D : B<int>
{
constexpr static int value = T;
};
int main()
{
std::cout << D<7>::value << std::endl; // 5, how to get 7 ?
}
Как я недавно узнал, параметры шаблона производного класса шаблона проверяются после имен в базовом классе во время поиска. При этом, все равно, чтобы квалифицировать value
инициализации имени T
чтобы ссылаться на параметр шаблона T
производного класса?
РЕДАКТИРОВАТЬ:
До сих пор от обсуждений в комментариях кажется, что единственный способ добиться этого - сделать зависимый тип/значение базового класса, который задержит поиск к именам базы (к фазе создания) и, таким образом, сделает единственное доступное значение для T - параметр шаблона.