以下内容不起作用:
// case one:
struct MyClass {
int x;
};
template <MyClass name>
void foo() {
}
但是如果我把它作为参考它就可以了:
// case two:
struct MyClass {
int x;
};
template <MyClass &name>
void foo() {
}
我是否需要传递MyClass的常量对象才能在第一种情况下使用类?
答案 0 :(得分:1)
看起来你正在尝试专门化模板?
也许这就是你想要的?
template <typename T>
void foo(const T& param){
cout << reinterpret_cast<const int&>(param) << endl;
}
template <>
void foo(const MyClass& param) {
cout << param.x << endl;
}
int main() {
MyClass bar = {13};
foo(42L); // Outputs 42
foo(bar); // Outputs 13
return 0;
}
(请注意,reinterpret_cast
非常可疑,我在这里只是用它作为例子。)