/**
* Private copy constructor undefined (no copy permitted).
*/
- CDList(const CDList<T, Allocator>& l);
+ CDList(const CDList<T, Allocator>& l) CVC4_UNDEFINED;
/**
* Allocate the first list segment.
friend class ExprManagerScope;
// undefined, private copy constructor (disallow copy)
- ExprManager(const ExprManager&);
+ ExprManager(const ExprManager&) CVC4_UNDEFINED;
public:
// bool properlyContainsDecision(TNode); // all children are atomic
// undefined private copy constructor (disallow copy)
- NodeManager(const NodeManager&);
+ NodeManager(const NodeManager&) CVC4_UNDEFINED;
public:
# endif /* __GNUC__ >= 4 */
#endif /* defined _WIN32 || defined __CYGWIN__ */
+// Can use CVC4_UNDEFINED for things like undefined, private
+// copy constructors. The advantage is that with CVC4_UNDEFINED,
+// if something _does_ try to call the function, you get an error
+// at the point of the call (rather than a link error later).
+#ifdef __GNUC__
+# define CVC4_UNDEFINED __attribute__((error("this function intentionally undefined")))
+#else /* ! __GNUC__ */
+# define CVC4_UNDEFINED
+#endif /* __GNUC__ */
+
#define EXPECT_TRUE(x) __builtin_expect( (x), true )
#define EXPECT_FALSE(x) __builtin_expect( (x), false )
#define NORETURN __attribute__ ((noreturn))
*/
class OutputChannel {
/** Disallow copying: private constructor */
- OutputChannel(const OutputChannel&);
+ OutputChannel(const OutputChannel&) CVC4_UNDEFINED;
/** Disallow assignment: private operator=() */
- OutputChannel& operator=(const OutputChannel&);
+ OutputChannel& operator=(const OutputChannel&) CVC4_UNDEFINED;
public:
#include <iostream>
#include <string>
-#include "exception.h"
-#include "language.h"
+#include "util/exception.h"
+#include "util/language.h"
namespace CVC4 {