Коль речь идет о шаблонах и желательно избавиться от int, не лучше ли воспользоваться шаблоном?
template <class T, template <typename> class mc>
class property : public mc<T> {
public:
property& operator= (T arg) {
this->Setter(arg);
return *this;
}
operator T() {
return this->Getter();
}
};
template<class T>
class Test {
protected:
T Getter() {
std::cout << ("GET\n");
return n;
}
void Setter(T arg) {
std::cout << ("SET\n");
n = arg;
}
T n;
};
int main() {
property<int, Test> x;
x = 10;
std::cout << "Hello World! << "<< x << "\n";
property<float, Test> y;
y = 5.3f;
std::cout << "Hello World! << "<< y << "\n";
}