1515#include < vector>
1616#include < cstdlib>
1717
18- #include < boost/foreach.hpp>
1918#include < boost/throw_exception.hpp>
2019
2120#include < boost/compute/cl.hpp>
@@ -85,7 +84,10 @@ class system
8584 // / \throws no_device_found if no device with \p name is found.
8685 static device find_device (const std::string &name)
8786 {
88- BOOST_FOREACH (const device &device, devices ()){
87+ const std::vector<device> devices = system::devices ();
88+ for (size_t i = 0 ; i < devices.size (); i++){
89+ const device& device = devices[i];
90+
8991 if (device.name () == name){
9092 return device;
9193 }
@@ -108,10 +110,13 @@ class system
108110 {
109111 std::vector<device> devices;
110112
111- BOOST_FOREACH (const platform &platform, platforms ()){
112- BOOST_FOREACH (const device &device, platform.devices ()){
113- devices.push_back (device);
114- }
113+ const std::vector<platform> platforms = system::platforms ();
114+ for (size_t i = 0 ; i < platforms.size (); i++){
115+ const std::vector<device> platform_devices = platforms[i].devices ();
116+
117+ devices.insert (
118+ devices.end (), platform_devices.begin (), platform_devices.end ()
119+ );
115120 }
116121
117122 return devices;
@@ -122,8 +127,9 @@ class system
122127 {
123128 size_t count = 0 ;
124129
125- BOOST_FOREACH (const platform &platform, platforms ()){
126- count += platform.device_count ();
130+ const std::vector<platform> platforms = system::platforms ();
131+ for (size_t i = 0 ; i < platforms.size (); i++){
132+ count += platforms[i].device_count ();
127133 }
128134
129135 return count;
@@ -214,7 +220,8 @@ class system
214220 const char *vendor = detail::getenv (" BOOST_COMPUTE_DEFAULT_VENDOR" );
215221
216222 if (name || type || platform || vendor){
217- BOOST_FOREACH (const device &device, devices_){
223+ for (size_t i = 0 ; i < devices_.size (); i++){
224+ const device& device = devices_[i];
218225 if (name && !matches (device.name (), name))
219226 continue ;
220227
@@ -237,14 +244,18 @@ class system
237244 }
238245
239246 // find the first gpu device
240- BOOST_FOREACH (const device &device, devices_){
247+ for (size_t i = 0 ; i < devices_.size (); i++){
248+ const device& device = devices_[i];
249+
241250 if (device.type () == device::gpu){
242251 return device;
243252 }
244253 }
245254
246255 // find the first cpu device
247- BOOST_FOREACH (const device &device, devices_){
256+ for (size_t i = 0 ; i < devices_.size (); i++){
257+ const device& device = devices_[i];
258+
248259 if (device.type () == device::cpu){
249260 return device;
250261 }
0 commit comments