I have code similar to this one.
It compiles under C++14
, if I comment typename T::value_type
and uncomment auto
in test()
method.
However I can not make this works in C++11
. Even I use decltype
I still get error error: invalid use of incomplete type ‘class B’
How can I access correctly the typedef of T::value_type
?
Code:
#include <iostream>
template <class T>
class A{
public:
typename T::value_type
// auto
test() const{
return self()->test2();
}
private:
const T *self() const{
return static_cast<const T*>(this);
}
};
class B : public A<B>{
public:
using value_type = int;
value_type test2() const{
return 42;
}
};
int main(){
B b;
std::cout << b.test() << std::endl;
}
Aucun commentaire:
Enregistrer un commentaire