FFT(size_t length, fft::direction dir = fft::forward, const Planner &planner = Planner()) : plan(current_context().queue(), std::vector<size_t>(1, length), std::vector<fft::direction>(1, dir), planner) {}
FFT(const std::initializer_list<size_t> &lengths, const std::initializer_list<fft::direction> &dirs, const Planner &planner = Planner()) : plan(current_context().queue(), lengths, dirs, planner) {}
/// 1D constructor FFT(const std::vector<cl::CommandQueue> &queues, size_t length, fft::direction dir = fft::forward, const Planner &planner = Planner()) : plan(queues, std::vector<size_t>(1, length), std::vector<fft::direction>(1, dir), planner) {}
FFT(const std::vector<cl::CommandQueue> &queues, const std::initializer_list<size_t> &lengths, const std::initializer_list<fft::direction> &dirs, const Planner &planner = Planner()) : plan(queues, lengths, dirs, planner) {}
FFT(const std::initializer_list<size_t> &lengths, fft::direction dir = fft::forward, const Planner &planner = Planner()) : plan(current_context().queue(), lengths, std::vector<fft::direction>(lengths.size(), dir), planner) {}
FFT(const std::vector<cl::CommandQueue> &queues, const std::initializer_list<size_t> &lengths, fft::direction dir = fft::forward, const Planner &planner = Planner()) : plan(queues, lengths, std::vector<fft::direction>(lengths.size(), dir), planner) {}
FFT(const std::vector<size_t> &lengths, const std::vector<fft::direction> &dirs, const Planner &planner = Planner()) : plan(current_context().queue(), lengths, dirs, planner) {}
TaskTask::TaskTask() : SequenceTask() { #if BEHAVIAC_USE_HTN this->_planner = BEHAVIAC_NEW Planner(); #endif //BEHAVIAC_USE_HTN }