Skip to content
Snippets Groups Projects
Commit 68e8bcea authored by Marco Agnese's avatar Marco Agnese Committed by Christoph Grüninger
Browse files

use std::is_convertible istead of Dune::Conversion

parent f7c01419
Branches
Tags
1 merge request!37feature/ use std::is_convertible istead of Dune::Conversion
......@@ -6,6 +6,7 @@
#include <cmath>
#include <cstddef>
#include <iostream>
#include <type_traits>
#include <vector>
#include <dune/common/boundschecking.hh>
......@@ -87,7 +88,7 @@ namespace Dune
namespace
{
template< class DenseMatrix, class RHS,
bool primitive = Conversion< RHS, typename DenseMatrix::field_type >::exists >
bool primitive = std::is_convertible< RHS, typename DenseMatrix::field_type >::value >
class DenseMatrixAssignerImplementation;
template< class DenseMatrix, class RHS >
......@@ -141,7 +142,7 @@ namespace Dune
{
static void apply ( M &m, const T &t )
{
static_assert( (Conversion< const T, const M >::exists), "No template specialization of DenseMatrixAssigner found" );
static_assert( (std::is_convertible< const T, const M >::value), "No template specialization of DenseMatrixAssigner found" );
m = static_cast< const M & >( t );
}
};
......
......@@ -2,8 +2,9 @@
// vi: set et ts=4 sw=2 sts=2:
#ifndef DUNE_ITERATORFACADES_HH
#define DUNE_ITERATORFACADES_HH
#include <iterator>
#include "typetraits.hh"
#include <type_traits>
namespace Dune
{
......@@ -230,7 +231,7 @@ namespace Dune
operator==(const ForwardIteratorFacade<T1,V1,R1,D>& lhs,
const ForwardIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
else
return static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
......@@ -252,7 +253,7 @@ namespace Dune
operator!=(const ForwardIteratorFacade<T1,V1,R1,D>& lhs,
const ForwardIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return !static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
else
return !static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
......@@ -371,7 +372,7 @@ namespace Dune
*/
template<class T1, class V1, class R1, class D,
class T2, class V2, class R2>
inline typename std::enable_if<Conversion<T2,T1>::exists,bool>::type
inline typename std::enable_if<std::is_convertible<T2,T1>::value,bool>::type
operator==(const BidirectionalIteratorFacade<T1,V1,R1,D>& lhs,
const BidirectionalIteratorFacade<T2,V2,R2,D>& rhs)
{
......@@ -389,7 +390,7 @@ namespace Dune
template<class T1, class V1, class R1, class D,
class T2, class V2, class R2>
inline
typename std::enable_if<Conversion<T1,T2>::exists && !Conversion<T2,T1>::exists,
typename std::enable_if<std::is_convertible<T1,T2>::value && !std::is_convertible<T2,T1>::value,
bool>::type
operator==(const BidirectionalIteratorFacade<T1,V1,R1,D>& lhs,
const BidirectionalIteratorFacade<T2,V2,R2,D>& rhs)
......@@ -582,7 +583,7 @@ namespace Dune
operator==(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
else
return static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
......@@ -604,7 +605,7 @@ namespace Dune
operator!=(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return !static_cast<const T1&>(lhs).equals(static_cast<const T2&>(rhs));
else
return !static_cast<const T2&>(rhs).equals(static_cast<const T1&>(lhs));
......@@ -626,7 +627,7 @@ namespace Dune
operator<(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))>0;
else
return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))<0;
......@@ -649,7 +650,7 @@ namespace Dune
operator<=(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))>=0;
else
return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))<=0;
......@@ -672,7 +673,7 @@ namespace Dune
operator>(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))<0;
else
return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))>0;
......@@ -694,7 +695,7 @@ namespace Dune
operator>=(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs))<=0;
else
return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs))>=0;
......@@ -716,7 +717,7 @@ namespace Dune
operator-(const RandomAccessIteratorFacade<T1,V1,R1,D>& lhs,
const RandomAccessIteratorFacade<T2,V2,R2,D>& rhs)
{
if(Conversion<T2,T1>::exists)
if(std::is_convertible<T2,T1>::value)
return -static_cast<const T1&>(lhs).distanceTo(static_cast<const T2&>(rhs));
else
return static_cast<const T2&>(rhs).distanceTo(static_cast<const T1&>(lhs));
......
......@@ -5,8 +5,7 @@
#include <cstddef>
#include <iterator>
#include "typetraits.hh"
#include <type_traits>
namespace Dune
{
......@@ -91,8 +90,8 @@ namespace Dune
put(const RAPropertyMapHelper<Reference,PropertyMap>& pmap,
const Key& key, const Value& value)
{
static_assert((Conversion<typename PropertyMap::Category,WritablePropertyMapTag>
::exists), "WritablePropertyMapTag required!");
static_assert(std::is_convertible<typename PropertyMap::Category,WritablePropertyMapTag>::value,
"WritablePropertyMapTag required!");
static_cast<const PropertyMap&>(pmap)[key] = value;
}
......
......@@ -4,9 +4,9 @@
#define DUNE_COMMON_DUMMYITERATOR_HH
#include <cstddef>
#include <type_traits>
#include <dune/common/iteratorfacades.hh>
#include <dune/common/typetraits.hh>
template<typename T>
class dummyiterator
......@@ -25,7 +25,7 @@ public:
template<typename T2>
dummyiterator
( const dummyiterator<T2>& o,
typename std::enable_if<Dune::Conversion<T2&, T&>::exists>::type* = 0)
typename std::enable_if<std::is_convertible<T2&, T&>::exists>::value* = 0)
: value(o.value)
{}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment