有什么方法可以实现指定的行为?如果有什么花招或可以使用traits或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
}

最佳答案

只是专门针对虚空:

template <typename T> struct Functional {
   T operator()() const {
      T a(5);
      return a;
   }
};
template <> struct Functional<void> {
   void operator()() const {
   }
};

关于C++模板问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3245148/

10-12 17:11