我想通過重載()作爲getter方法爲類添加一些語法糖。但是,getter方法採用非類型模板參數。舉一個簡單的測試用例:我可以將非類型模板參數傳遞給重載操作符嗎?
#include <iostream>
class Foo
{
public:
template <int i> void get()
{
std::cout << "called get() with " << i << std::endl;
}
template <int i> void operator()()
{
std::cout << "called overloaded() with " << i << std::endl;
}
};
int main()
{
Foo foo;
foo.get<1>();
foo.get<2>();
foo<3>(); // error: no match for ‘operator<’ in ‘foo < 3’
return 0;
}
這編譯和運行,如果foo<3>();
被註釋掉預期。 C++語法是否支持我想要做的事情,還是應該放棄並堅持getter的命名方法?
我現在無法證明它,但肯定唯一的辦法是'foo.operator()<3>()',這可能會失敗的目的。 – PlasmaHH 2012-02-02 16:20:07