1*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===// 2*0a6a1f1dSLionel Sambuc // 3*0a6a1f1dSLionel Sambuc // The LLVM Compiler Infrastructure 4*0a6a1f1dSLionel Sambuc // 5*0a6a1f1dSLionel Sambuc // This file is dual licensed under the MIT and the University of Illinois Open 6*0a6a1f1dSLionel Sambuc // Source Licenses. See LICENSE.TXT for details. 7*0a6a1f1dSLionel Sambuc // 8*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===// 9*0a6a1f1dSLionel Sambuc 10*0a6a1f1dSLionel Sambuc #ifndef NOTCONSTRUCTIBLE_H 11*0a6a1f1dSLionel Sambuc #define NOTCONSTRUCTIBLE_H 12*0a6a1f1dSLionel Sambuc 13*0a6a1f1dSLionel Sambuc #include <functional> 14*0a6a1f1dSLionel Sambuc 15*0a6a1f1dSLionel Sambuc class NotConstructible 16*0a6a1f1dSLionel Sambuc { 17*0a6a1f1dSLionel Sambuc NotConstructible(const NotConstructible&); 18*0a6a1f1dSLionel Sambuc NotConstructible& operator=(const NotConstructible&); 19*0a6a1f1dSLionel Sambuc public: 20*0a6a1f1dSLionel Sambuc }; 21*0a6a1f1dSLionel Sambuc 22*0a6a1f1dSLionel Sambuc inline 23*0a6a1f1dSLionel Sambuc bool 24*0a6a1f1dSLionel Sambuc operator==(const NotConstructible&, const NotConstructible&) 25*0a6a1f1dSLionel Sambuc {return true;} 26*0a6a1f1dSLionel Sambuc 27*0a6a1f1dSLionel Sambuc namespace std 28*0a6a1f1dSLionel Sambuc { 29*0a6a1f1dSLionel Sambuc 30*0a6a1f1dSLionel Sambuc template <> 31*0a6a1f1dSLionel Sambuc struct hash<NotConstructible> 32*0a6a1f1dSLionel Sambuc : public std::unary_function<NotConstructible, std::size_t> 33*0a6a1f1dSLionel Sambuc { 34*0a6a1f1dSLionel Sambuc std::size_t operator()(const NotConstructible&) const {return 0;} 35*0a6a1f1dSLionel Sambuc }; 36*0a6a1f1dSLionel Sambuc 37*0a6a1f1dSLionel Sambuc } 38*0a6a1f1dSLionel Sambuc 39*0a6a1f1dSLionel Sambuc #endif // NOTCONSTRUCTIBLE_H 40