From c6664a06093a9da96028d4f5488dbcab6ecab5b4 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 10 Sep 2009 16:21:49 +0000 Subject: New utility.hpp header. --- libdimensionxx/dimensionxx.hpp | 1 + libdimensionxx/dimensionxx/array.hpp | 14 ---------- libdimensionxx/dimensionxx/utility.hpp | 47 ++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 libdimensionxx/dimensionxx/utility.hpp diff --git a/libdimensionxx/dimensionxx.hpp b/libdimensionxx/dimensionxx.hpp index 99b9a97..ba3f662 100644 --- a/libdimensionxx/dimensionxx.hpp +++ b/libdimensionxx/dimensionxx.hpp @@ -22,6 +22,7 @@ #define DIMENSIONXX_HPP // Internal helpers +#include #include // libdimension wrappers diff --git a/libdimensionxx/dimensionxx/array.hpp b/libdimensionxx/dimensionxx/array.hpp index e9c2967..b3b0496 100644 --- a/libdimensionxx/dimensionxx/array.hpp +++ b/libdimensionxx/dimensionxx/array.hpp @@ -188,20 +188,6 @@ namespace Dimension std::tr1::shared_ptr m_object; }; - // A constraint enforcing that T is a POD type by making it part of a union. - // Taking the address of this function will cause a compile-time failure if - // T is not a POD type. - template - void - POD_constraint() - { - union - { - T t; - } constraint; - static_cast(constraint); // Silence unused variable warning - } - // Array_Element template diff --git a/libdimensionxx/dimensionxx/utility.hpp b/libdimensionxx/dimensionxx/utility.hpp new file mode 100644 index 0000000..50c5e67 --- /dev/null +++ b/libdimensionxx/dimensionxx/utility.hpp @@ -0,0 +1,47 @@ +/************************************************************************* + * Copyright (C) 2009 Tavian Barnes * + * * + * This file is part of The Dimension Library. * + * * + * The Dimension Library is free software; you can redistribute it and/ * + * or modify it under the terms of the GNU Lesser General Public License * + * as published by the Free Software Foundation; either version 3 of the * + * License, or (at your option) any later version. * + * * + * The Dimension Library is distributed in the hope that it will be * + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program. If not, see * + * . * + *************************************************************************/ + +// Template utilities + +#ifndef DIMENSIONXX_UTILITY_HPP +#define DIMENSIONXX_UTILITY_HPP + +namespace Dimension +{ + // A constraint enforcing that T is a POD type by making it part of a union. + // Taking the address of this function will cause a compile-time failure if + // T is not a POD type. + template + void POD_constraint(); + + // POD constraint implementation + template + void + POD_constraint() + { + union + { + T t; + } constraint; + static_cast(constraint); // Silence unused variable warning + } +} + +#endif // DIMENSIONXX_UTILITY_HPP -- cgit v1.2.3