diff src/bitfcns.cc @ 14725:fa48fd0f160f

Add configure check for templated bitwise operators. * m4/acinclude.m4 (OCTAVE_CXX_BITWISE_OP_TEMPLATES): New macro. * configure.ac: Use it. * src/bitfcns.cc: Define bit_and, bit_or and bit_xor if missing.
author Carlo de Falco <cdf@users.sourceforge.net>
date Tue, 05 Jun 2012 07:39:46 +0200
parents 57e4ff70b7c1
children 460a3c6d8bf1
line wrap: on
line diff
--- a/src/bitfcns.cc	Mon Jun 04 20:55:25 2012 -0400
+++ b/src/bitfcns.cc	Tue Jun 05 07:39:46 2012 +0200
@@ -44,6 +44,32 @@
 
 #include <functional>
 
+#if !defined (HAVE_CXX_BITWISE_OP_TEMPLATES)
+namespace std 
+{
+  template <typename T>
+  struct bit_and 
+  {
+  public: 
+    T operator() (const T & op1, const T & op2) const { return (op1 & op2); }
+  };
+
+  template <typename T>
+  struct bit_or 
+  {
+  public: 
+    T operator() (const T & op1, const T & op2) const { return (op1 | op2); }
+  };
+
+  template <typename T>
+  struct bit_xor 
+  {
+  public: 
+    T operator() (const T & op1, const T & op2) const { return (op1 ^ op2); }
+  };
+}
+#endif
+
 template <typename OP, typename T>
 octave_value
 bitopxx(const OP& op, const std::string& fname,