有什麼辦法可以達到指定的行爲嗎? 如果有一些技巧,或者這可以使用traits或enable_if
完成,請讓我知道。C++模板問題
template <typename T> struct Functional {
T operator()() const {
T a(5);
// I want this statement to be tranformed into
// plain 'return;' in case T = void
return a; // <---
}
};
int main() {
Functional<int> a;
a();
Functional<void> b;
b(); // <--- Compilation error here
}
可以在函數返回一個'void'表達式返回'void'所以你確定這一點的代碼,你您的其他功能存在更大的問題。 'T a(5)'不起作用。你不能有一個'void'類型的變量,所以一個簡單的'return a;'不會起作用。不知道你的班級模板的細節很難給出具體細節。 – 2010-07-14 10:19:04