Есть ли способ достичь указанного поведения? Если есть какой-то трюк, или это можно сделать с помощью признаков или enable_if
, сообщите мне.
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
}