Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
TestCxx20.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7
8#include <gtest/gtest.h>
9
10#include "arcane/utils/ArcaneCxx20.h"
11
12#include <atomic>
13
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17using namespace Arcane;
18
19template <class T>
20concept integral = std::is_integral_v<T>;
21
22TEST(TestCxx20,Atomic)
23{
24 Int32 x = 25;
25 std::atomic_ref<Int32> ax(x);
26 ax.fetch_add(32);
27 ASSERT_EQ(x,57);
28}
29
30namespace
31{
32template<integral DataType> DataType _testAdd(DataType a,DataType b)
33{
34 return a+b;
35}
36}
37
39{
40 Int32 a = 12;
41 Int32 b = -48;
42 ASSERT_EQ(_testAdd(a,b),(a+b));
43}
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Espace de nom pour l'utilisation des accélérateurs.
@ Atomic
Utilise des opérations atomiques entre les blocs.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-