UnionCast.h
上传用户:chinafayin
上传日期:2022-04-05
资源大小:153k
文件大小:1k
源码类别:

并行计算

开发平台:

Visual C++

  1. /*
  2.     Linear Algebra / Math library
  3.     Copyright (C) 2003-2009, Marek Olsak (maraeo@gmail.com), All Rights Reserved.
  4.     Copyright (C) 2003-2005, Tomas Pastorek (tomas@tomaspastorek.cz), All Rights Reserved.
  5.     This program is free software; you can redistribute it and/or
  6.     modify it under the terms of the GNU General Public License
  7.     as published by the Free Software Foundation; either version 2
  8.     of the License, or (at your option) any later version.
  9.     This program is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU General Public License for more details.
  13.     You should have received a copy of the GNU General Public License
  14.     along with this program; if not, write to the Free Software
  15.     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  16. */
  17. #pragma once
  18. namespace Rune
  19. {
  20.     // Sablona pro pretypovani pres union, vhodne pro bezpecnou reinterpretaci vsech datovych typu
  21.     // krome pointeru a referenci (pro tyto se pouziva reinterpret_cast).
  22.     template<typename T1, typename T2>
  23.     inline T1 union_cast(const T2 &a)
  24.     {
  25.         union
  26.         {
  27.             T2 a;
  28.             T1 b;
  29.         } myUnion;
  30.         myUnion.a = a;
  31.         return myUnion.b;
  32.     }
  33. }