diff options
author | Tavian Barnes <tavianator@gmail.com> | 2009-09-10 16:21:49 +0000 |
---|---|---|
committer | Tavian Barnes <tavianator@gmail.com> | 2009-09-10 16:21:49 +0000 |
commit | c6664a06093a9da96028d4f5488dbcab6ecab5b4 (patch) | |
tree | 4c35dea2f263a343a35d9ce4212a481f1cf90602 | |
parent | cf3d6906df7ffb4efa5398832e44ab31fe3b2721 (diff) | |
download | dimension-c6664a06093a9da96028d4f5488dbcab6ecab5b4.tar.xz |
New utility.hpp header.
-rw-r--r-- | libdimensionxx/dimensionxx.hpp | 1 | ||||
-rw-r--r-- | libdimensionxx/dimensionxx/array.hpp | 14 | ||||
-rw-r--r-- | libdimensionxx/dimensionxx/utility.hpp | 47 |
3 files changed, 48 insertions, 14 deletions
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 <dimensionxx/utility.hpp> #include <dimensionxx/cookie.hpp> // 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<T> 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 <typename T> - void - POD_constraint() - { - union - { - T t; - } constraint; - static_cast<void>(constraint); // Silence unused variable warning - } - // Array_Element template <typename T> 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 <tavianator@gmail.com> * + * * + * 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 * + * <http://www.gnu.org/licenses/>. * + *************************************************************************/ + +// 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 <typename T> + void POD_constraint(); + + // POD constraint implementation + template <typename T> + void + POD_constraint() + { + union + { + T t; + } constraint; + static_cast<void>(constraint); // Silence unused variable warning + } +} + +#endif // DIMENSIONXX_UTILITY_HPP |