diff --git a/README.md b/README.md
index a0618eb..d6548cf 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
-
+
@@ -295,10 +295,7 @@ int main() {
bar3.set_prefix_text("Progress Bar #3 ");
// Construct MultiProgress object
- indicators::MultiProgress bars;
- bars.insert<0>(bar1);
- bars.insert<1>(bar2);
- bars.insert<2>(bar3);
+ indicators::MultiProgress bars(bar1, bar2, bar3);
std::cout << "Multiple Progress Bars:\n";
diff --git a/include/indicators/multi_progress.hpp b/include/indicators/multi_progress.hpp
index 2dbb9c9..8121ee9 100644
--- a/include/indicators/multi_progress.hpp
+++ b/include/indicators/multi_progress.hpp
@@ -36,29 +36,32 @@ namespace indicators {
template class MultiProgress {
public:
- MultiProgress() { _bars.reserve(count); }
- template
- typename std::enable_if<(index < count), void>::type insert(Indicator &bar) {
- _bars.insert(_bars.begin() + index, 1, bar);
- bar._multi_progress_mode = true;
+ template ::type
+ >
+ explicit MultiProgress(Indicators&... bars) {
+ _bars = {bars...};
+ for (auto& bar: _bars) {
+ bar.get()._multi_progress_mode = true;
+ }
}
template
- typename std::enable_if<(index < count), void>::type set_progress(float value) {
+ typename std::enable_if<(index >=0 && index < count), void>::type set_progress(float value) {
if (!_bars[index].get().is_completed())
_bars[index].get().set_progress(value);
_print_progress();
}
- template typename std::enable_if<(index < count), void>::type tick() {
+ template typename std::enable_if<(index >=0 && index < count), void>::type tick() {
if (!_bars[index].get().is_completed())
_bars[index].get().tick();
_print_progress();
}
template
- typename std::enable_if<(index < count), bool>::type is_completed() const {
+ typename std::enable_if<(index >=0 && index < count), bool>::type is_completed() const {
return _bars[index].get().is_completed();
}
diff --git a/samples/multi_block_progress_bar.cpp b/samples/multi_block_progress_bar.cpp
index d43aabb..de53051 100644
--- a/samples/multi_block_progress_bar.cpp
+++ b/samples/multi_block_progress_bar.cpp
@@ -24,10 +24,7 @@ int main() {
bar3.show_remaining_time();
bar3.set_prefix_text("Progress Bar #3 ");
- indicators::MultiProgress bars;
- bars.insert<0>(bar1);
- bars.insert<1>(bar2);
- bars.insert<2>(bar3);
+ indicators::MultiProgress bars(bar1, bar2, bar3);
std::cout << "Multiple Progress Bars:\n";
diff --git a/samples/multi_progress_bar.cpp b/samples/multi_progress_bar.cpp
index dc71c41..78360ec 100644
--- a/samples/multi_progress_bar.cpp
+++ b/samples/multi_progress_bar.cpp
@@ -39,10 +39,7 @@ int main() {
bar3.show_remaining_time();
bar3.set_prefix_text("Progress Bar #3 ");
- indicators::MultiProgress bars;
- bars.insert<0>(bar1);
- bars.insert<1>(bar2);
- bars.insert<2>(bar3);
+ indicators::MultiProgress bars(bar1, bar2, bar3);
std::cout << "Multiple Progress Bars:\n";