Меня очень интересуют возможности шаблонных классов. Теперь мне интересно, как я могу добиться следующего:
Const<5>::getValue();
На данный момент я могу сделать это:
Const<int, 5>::getValue());
И это реализация класса:
template <typename T, T value>
class Const {
public:
typedef T Type;
static T getValue() {
return value;
}
};
Я знаю, что это просто очень глупый пример, но как только я смогу это сделать, я мог бы упростить следующую строку:
Getter<int, TestClass, &TestClass::get> getter;
просто:
Getter<&TestClass::get> getter;
Это будет TestClass:
class TestClass {
private:
int _value;
public:
int get() {
return _value;
}
};
Спасибо за вашу помощь!
[РЕДАКТИРОВАТЬ-1]
Что касается J.N. да, C ++ 11 будет в порядке.
Что касается Xeo, я пытался использовать #define AUTO_ARG(x) decltype(x), x
, но это не работает в TestClass.
[РЕДАКТИРОВАТЬ-2]
Что касается KennyTM, когда я объявляю Getter<...> g
в TestClass, он не работает с Getter<AUTO_ARG(&TestClass::get)>
, он работает только с Getter<int (TestClass::*)() const, &TestClass::get>
.
Теперь мне интересно, это просто ошибка в Visual Studio ???