198760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow//===----------------------------------------------------------------------===// 298760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow// 398760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow// The LLVM Compiler Infrastructure 498760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow// 598760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 698760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow// Source Licenses. See LICENSE.TXT for details. 798760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow// 898760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow//===----------------------------------------------------------------------===// 998760c18f85bafd98dde7a309e1b0e677abd47d8Marshall Clow 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef NOTCONSTRUCTIBLE_H 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#define NOTCONSTRUCTIBLE_H 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <functional> 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass NotConstructible 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant NotConstructible(const NotConstructible&); 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant NotConstructible& operator=(const NotConstructible&); 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic: 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}; 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantinline 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantbool 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantoperator==(const NotConstructible&, const NotConstructible&) 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{return true;} 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantnamespace std 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttemplate <> 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantstruct hash<NotConstructible> 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : public std::unary_function<NotConstructible, std::size_t> 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::size_t operator()(const NotConstructible&) const {return 0;} 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}; 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 396046aced820aaab4f14f2026531dd11d10690691Howard Hinnant#endif // NOTCONSTRUCTIBLE_H 40