diff --git a/SConstruct b/SConstruct index 5b4bc7ca9..a0723f75a 100644 --- a/SConstruct +++ b/SConstruct @@ -328,6 +328,13 @@ struct %(N)s_derived : %(N)s_base { arrayb; b[0]=1; ''' +), + Cxx11RequiredFeature('range-based for', ''' +#include "compiler-range_for.h" +''', ''' + int b[2]; + range_for(int&c,b)c=0; +''' ), Cxx11RequiredFeature('std::unordered_map::emplace', ''' #include @@ -1369,26 +1376,6 @@ typedef tt::conditional::type b; if self.check_cxx11_type_traits(context, f): return raise SCons.Errors.StopError("C++ compiler does not support .") - @_implicit_test - def check_boost_foreach(self,context,**kwargs): - """ -help:assume Boost.Foreach works -""" - return self.Compile(context, msg='for Boost.Foreach', successflags={'CPPDEFINES' : ['DXX_HAVE_BOOST_FOREACH']}, **kwargs) - @_implicit_test - def check_cxx11_range_for(self,context,_successflags={'CPPDEFINES' : ['DXX_HAVE_CXX11_RANGE_FOR']},**kwargs): - return self.Compile(context, msg='for C++11 range-based for', successflags=_successflags, **kwargs) - @_custom_test - def _check_range_based_for(self,context): - include = ''' -#include "compiler-range_for.h" -''' - main = ''' - int b[2]; - range_for(int&c,b)c=0; -''' - if not self.check_cxx11_range_for(context, text=include, main=main) and not self.check_boost_foreach(context, text=include, main=main): - raise SCons.Errors.StopError("C++ compiler does not support range-based for or Boost.Foreach.") @_custom_test def check_cxx11_required_features(self,context): features = self.__cxx11_required_features diff --git a/common/include/compiler-range_for.h b/common/include/compiler-range_for.h index 34b02e835..a8c0bd9e8 100644 --- a/common/include/compiler-range_for.h +++ b/common/include/compiler-range_for.h @@ -6,11 +6,4 @@ */ #pragma once -#if defined(DXX_HAVE_CXX11_RANGE_FOR) #define range_for(A,B) for(A:B) -#elif defined(DXX_HAVE_BOOST_FOREACH) -#include -#define range_for BOOST_FOREACH -#else -#error "No range-based for implementation found." -#endif