/* * Copyright (C) 2014 Pavel Kirienko */ #pragma once #include namespace uavcan { /** * Usage: * StaticAssert::check(); */ template struct StaticAssert; template <> struct StaticAssert { static void check() { } }; /** * Usage: * ShowIntegerAsError::foobar(); */ template struct ShowIntegerAsError; class Noncopyable { Noncopyable(const Noncopyable&); Noncopyable& operator=(const Noncopyable&); protected: Noncopyable() { } }; template struct EnableIf { }; template struct EnableIf { typedef T Type; }; template struct EnableIfType { typedef R Type; }; template struct StaticIf; template struct StaticIf { typedef TrueType Result; }; template struct StaticIf { typedef FalseType Result; }; template struct BooleanType { }; typedef BooleanType TrueType; typedef BooleanType FalseType; } /// Ensure that conditional comilation macros are present #include