-
Notifications
You must be signed in to change notification settings - Fork 795
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
The following (silly) code:
#include <iostream>
#include <vector>
#include <algorithm>
int main () {
std::vector<int> foo;
foo.emplace_back(33);
std::for_each(std::begin(foo), std::end(foo), [&](int& elem) {
std::cout << elem << std::endl;
});
return foo.size();
};
Fails to compile in SYCL mode:
$ intel_sycl -std=c++11 -fsycl k.cpp -lOpenCL -lsycl
In file included from k.cpp:3:
/home/ruyman/Projects/sycl/build/lib/clang/8.0.0/include/sycl_wrappers/algorithm:26:10: error:
function 'std::for_each<__gnu_cxx::__normal_iterator<int *, std::vector<int,
std::allocator<int> > >, (lambda at k.cpp:10:49)>' is used but not defined in this
translation unit, and cannot be defined in any other translation unit because its type does
not have linkage
Function for_each(InputIterator first, InputIterator last, Function f);
^
k.cpp:10:8: note: used here
std::for_each(std::begin(foo), std::end(foo), [&](int& elem) {
^
1 error generated.
In file included from k.cpp:3:
/home/ruyman/Projects/sycl/build/lib/clang/8.0.0/include/sycl_wrappers/algorithm:26:10: error:
function 'std::for_each<__gnu_cxx::__normal_iterator<int *, std::vector<int,
std::allocator<int> > >, (lambda at k.cpp:10:49)>' is used but not defined in this
translation unit, and cannot be defined in any other translation unit because its type does
not have linkage
Function for_each(InputIterator first, InputIterator last, Function f);
^
k.cpp:10:8: note: used here
std::for_each(std::begin(foo), std::end(foo), [&](int& elem) {
^
1 error generated.
but works without SYCL on the command line:
$ intel_sycl -std=c++11 k.cpp -lOpenCL -lsycl
$
Is this expected?
Am I correct in understanding that the SYCL mode requires different C++ headers, and that some alias are missing?
Is there any particular reason the normal system headers cannot be used? Note there is no SYCL code in that example.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working