27using Mantid::HistogramData::Histogram;
32template <
typename... Args, std::size_t... I>
34 return f(std::get<I>(args)...);
52template <
typename... Args>
55 std::initializer_list<std::tuple<Args...>> argss) {
56 auto ws = Mantid::API::createWorkspace<Mantid::DataObjects::Workspace2D>(
60 auto itArgs = argss.begin();
62 for (
size_t n = 1; itArgs != argss.end(); ++itArgs, ++
n) {
71template <
typename... Args>
74 const std::vector<std::tuple<Args...>> &argss) {
75 auto ws = Mantid::API::createWorkspace<Mantid::DataObjects::Workspace2D>(
79 auto itArgs = argss.cbegin();
81 for (
size_t n = 1; itArgs != argss.cend(); ++itArgs, ++
n) {
std::shared_ptr< Workspace2D > Workspace2D_sptr
shared pointer to Mantid::DataObjects::Workspace2D
std::function< Histogram_sptr(Args...)> HistogramFunc
Histogram_sptr call_function(HistogramFunc< Args... > f, std::tuple< Args... > args)
std::shared_ptr< Histogram > Histogram_sptr
Histogram_sptr call_function_impl(HistogramFunc< Args... > f, std::tuple< Args... > args, std::index_sequence< I... >)
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceFromFunctionAndArgsList_(impl::HistogramFunc< Args... > spectrumFunc, const std::vector< std::tuple< Args... > > &argss)
Mantid::DataObjects::Workspace2D_sptr create2DWorkspaceFromFunctionAndArgsList(impl::HistogramFunc< Args... > spectrumFunc, std::initializer_list< std::tuple< Args... > > argss)
Creates a 2D workspace from a function object, and a list of args instantiations.