Мне интересно, возможно ли получить доступ к определениям типов, которые даны в качестве параметров предыдущего шаблона в более поздних параметрах шаблона в списке параметров шаблона, например:
#include <iostream>
template<typename V>
struct TypeHolder {
typedef V value_type;
};
template<typename T, T::value_type v>
struct ValueHolder {
const static typename T::value_type value = v;
};
int main() {
typedef TypeHolder<int> IntTypeHolder;
typedef ValueHolder<IntTypeHolder,5> Five;
std::cout << Five::value << std::endl;
return 0;
}
Когда я компилирую вышеуказанноеНапример, я получаю следующую ошибку:
damian @ damian-HP-EliteBook-8440p: ~ $ g ++ -o cpptest test.cpp
test.cpp: 8: 25: ошибка: 'T:: value_type 'не является типом
Это из-за неправильного синтаксиса или то, что я пытаюсь сделать, просто невозможно в c ++?