Modern CPP Features - gunrock/essentials GitHub Wiki
Important to know the following modern C++ features when working with gunrock/essentials
. Please familiarize yourself with these before looking at the Programming API.
Lambda Expressions (since C++11)
Constructs a closure: an unnamed function object capable of capturing variables in scope.
- Learn about the limitations of lambda expressions in CUDA.
- An interesting issue.
A simple example.
auto sample_lambda = [=] __host__ __device__(int blah) -> bool {
return true;
};
Variadic Arguments (since C++11)
Allows a function to accept any number of extra arguments. Indicated by a trailing
...
(other than one introducing a pack expansion) (since C++11) following the parameter-list of a function declaration.
- Extensively used within the implementation of
graph_t
class.
template <memory_space_t space,
typename vertex_t,
typename edge_t,
typename weight_t,
class... graph_view_t>
class graph_t : public graph_view_t... {
// ... implementation.
}
Constexpr (since C++11)
constexpr - specifies that the value of a variable or function can appear in constant expressions