fix for constexpr disabled

This commit is contained in:
bolero-MURAKAMI 2013-02-20 02:23:20 +09:00
parent 84376c3f69
commit 4c996bd47b
58 changed files with 84 additions and 78 deletions

View file

@ -372,7 +372,7 @@ namespace sprout {
static_cast<std::size_t>(bit_count_ % 32) static_cast<std::size_t>(bit_count_ % 32)
); );
} }
SPROUT_CONSTEXPR md5 const process_bits(std::uint8_t bits, std::size_t bit_count) { SPROUT_CONSTEXPR md5 const process_bits(std::uint8_t bits, std::size_t bit_count) const {
return process_bits_impl(bits, bit_count); return process_bits_impl(bits, bit_count);
} }
SPROUT_CONSTEXPR md5 const process_byte(std::uint8_t byte) const { SPROUT_CONSTEXPR md5 const process_byte(std::uint8_t byte) const {

View file

@ -97,12 +97,12 @@ namespace sprout {
public: public:
template<typename T, typename IntType> template<typename T, typename IntType>
SPROUT_CONSTEXPR sprout::compost::effects::auto_pan_holder<T, IntType> SPROUT_CONSTEXPR sprout::compost::effects::auto_pan_holder<T, IntType>
operator()(T const& depth, T const& rate, IntType samples_per_sec) { operator()(T const& depth, T const& rate, IntType samples_per_sec) const {
return sprout::compost::effects::auto_pan_holder<T, IntType>(depth, rate, samples_per_sec); return sprout::compost::effects::auto_pan_holder<T, IntType>(depth, rate, samples_per_sec);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::auto_pan_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::auto_pan_holder<T>
operator()(T const& depth, T const& rate) { operator()(T const& depth, T const& rate) const {
return sprout::compost::effects::auto_pan_holder<T>(depth, rate); return sprout::compost::effects::auto_pan_holder<T>(depth, rate);
} }
}; };

View file

@ -37,7 +37,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::change_volume_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::change_volume_holder<T>
operator()(T const& value) { operator()(T const& value) const {
return sprout::compost::effects::change_volume_holder<T>(value); return sprout::compost::effects::change_volume_holder<T>(value);
} }
}; };

View file

@ -105,12 +105,12 @@ namespace sprout {
public: public:
template<typename T, typename IntType> template<typename T, typename IntType>
SPROUT_CONSTEXPR sprout::compost::effects::chorus_holder<T, IntType> SPROUT_CONSTEXPR sprout::compost::effects::chorus_holder<T, IntType>
operator()(T const& d, T const& depth, T const& rate, IntType samples_per_sec) { operator()(T const& d, T const& depth, T const& rate, IntType samples_per_sec) const {
return sprout::compost::effects::chorus_holder<T, IntType>(d, depth, rate, samples_per_sec); return sprout::compost::effects::chorus_holder<T, IntType>(d, depth, rate, samples_per_sec);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::chorus_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::chorus_holder<T>
operator()(T const& d, T const& depth, T const& rate) { operator()(T const& d, T const& depth, T const& rate) const {
return sprout::compost::effects::chorus_holder<T>(d, depth, rate); return sprout::compost::effects::chorus_holder<T>(d, depth, rate);
} }
}; };

View file

@ -39,7 +39,7 @@ namespace sprout {
public: public:
template<typename T = double> template<typename T = double>
SPROUT_CONSTEXPR sprout::compost::effects::clip_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::clip_holder<T>
operator()(T const& low = -1, T const& up = 1) { operator()(T const& low = -1, T const& up = 1) const {
return sprout::compost::effects::clip_holder<T>(low, up); return sprout::compost::effects::clip_holder<T>(low, up);
} }
}; };

View file

@ -92,7 +92,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::compress_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::compress_holder<T>
operator()(T const& threshold, T const& ratio) { operator()(T const& threshold, T const& ratio) const {
return sprout::compost::effects::compress_holder<T>(threshold, ratio); return sprout::compost::effects::compress_holder<T>(threshold, ratio);
} }
}; };

View file

@ -40,7 +40,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::distort_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::distort_holder<T>
operator()(T const& gain, T const& level) { operator()(T const& gain, T const& level) const {
return sprout::compost::effects::distort_holder<T>(gain, level); return sprout::compost::effects::distort_holder<T>(gain, level);
} }
}; };

View file

@ -41,7 +41,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::fuzz_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::fuzz_holder<T>
operator()(T const& gain, T const& level) { operator()(T const& gain, T const& level) const {
return sprout::compost::effects::fuzz_holder<T>(gain, level); return sprout::compost::effects::fuzz_holder<T>(gain, level);
} }
}; };

View file

@ -82,7 +82,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::noise_gate_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::noise_gate_holder<T>
operator()(T const& threshold) { operator()(T const& threshold) const {
return sprout::compost::effects::noise_gate_holder<T>(threshold); return sprout::compost::effects::noise_gate_holder<T>(threshold);
} }
}; };

View file

@ -68,7 +68,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::overdrive_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::overdrive_holder<T>
operator()(T const& gain, T const& level) { operator()(T const& gain, T const& level) const {
return sprout::compost::effects::overdrive_holder<T>(gain, level); return sprout::compost::effects::overdrive_holder<T>(gain, level);
} }
}; };

View file

@ -93,12 +93,12 @@ namespace sprout {
public: public:
template<typename T, typename IntType> template<typename T, typename IntType>
SPROUT_CONSTEXPR sprout::compost::effects::pseudo_stereo_holder<T, IntType> SPROUT_CONSTEXPR sprout::compost::effects::pseudo_stereo_holder<T, IntType>
operator()(T const& delay, IntType samples_per_sec) { operator()(T const& delay, IntType samples_per_sec) const {
return sprout::compost::effects::pseudo_stereo_holder<T, IntType>(delay, samples_per_sec); return sprout::compost::effects::pseudo_stereo_holder<T, IntType>(delay, samples_per_sec);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::pseudo_stereo_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::pseudo_stereo_holder<T>
operator()(T const& delay) { operator()(T const& delay) const {
return sprout::compost::effects::pseudo_stereo_holder<T>(delay); return sprout::compost::effects::pseudo_stereo_holder<T>(delay);
} }
}; };

View file

@ -100,12 +100,12 @@ namespace sprout {
public: public:
template<typename T, typename IntType> template<typename T, typename IntType>
SPROUT_CONSTEXPR sprout::compost::effects::reverb_holder<T, IntType> SPROUT_CONSTEXPR sprout::compost::effects::reverb_holder<T, IntType>
operator()(T const& attenuation, T const& delay, std::size_t repeat, IntType samples_per_sec) { operator()(T const& attenuation, T const& delay, std::size_t repeat, IntType samples_per_sec) const {
return sprout::compost::effects::reverb_holder<T, IntType>(attenuation, delay, repeat, samples_per_sec); return sprout::compost::effects::reverb_holder<T, IntType>(attenuation, delay, repeat, samples_per_sec);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::reverb_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::reverb_holder<T>
operator()(T const& attenuation, T const& delay, std::size_t repeat = 2) { operator()(T const& attenuation, T const& delay, std::size_t repeat = 2) const {
return sprout::compost::effects::reverb_holder<T>(attenuation, delay, repeat); return sprout::compost::effects::reverb_holder<T>(attenuation, delay, repeat);
} }
}; };

View file

@ -41,7 +41,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::compost::effects::superpose_holder< SPROUT_CONSTEXPR sprout::compost::effects::superpose_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::compost::effects::superpose_holder< return sprout::compost::effects::superpose_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(

View file

@ -72,12 +72,12 @@ namespace sprout {
public: public:
template<typename T, typename IntType> template<typename T, typename IntType>
SPROUT_CONSTEXPR sprout::compost::effects::tremolo_holder<T, IntType> SPROUT_CONSTEXPR sprout::compost::effects::tremolo_holder<T, IntType>
operator()(T const& depth, T const& rate, IntType samples_per_sec) { operator()(T const& depth, T const& rate, IntType samples_per_sec) const {
return sprout::compost::effects::tremolo_holder<T, IntType>(depth, rate, samples_per_sec); return sprout::compost::effects::tremolo_holder<T, IntType>(depth, rate, samples_per_sec);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::tremolo_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::tremolo_holder<T>
operator()(T const& depth, T const& rate) { operator()(T const& depth, T const& rate) const {
return sprout::compost::effects::tremolo_holder<T>(depth, rate); return sprout::compost::effects::tremolo_holder<T>(depth, rate);
} }
}; };

View file

@ -104,12 +104,12 @@ namespace sprout {
public: public:
template<typename T, typename IntType> template<typename T, typename IntType>
SPROUT_CONSTEXPR sprout::compost::effects::vibrato_holder<T, IntType> SPROUT_CONSTEXPR sprout::compost::effects::vibrato_holder<T, IntType>
operator()(T const& d, T const& depth, T const& rate, IntType samples_per_sec) { operator()(T const& d, T const& depth, T const& rate, IntType samples_per_sec) const {
return sprout::compost::effects::vibrato_holder<T, IntType>(d, depth, rate, samples_per_sec); return sprout::compost::effects::vibrato_holder<T, IntType>(d, depth, rate, samples_per_sec);
} }
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::compost::effects::vibrato_holder<T> SPROUT_CONSTEXPR sprout::compost::effects::vibrato_holder<T>
operator()(T const& d, T const& depth, T const& rate) { operator()(T const& d, T const& depth, T const& rate) const {
return sprout::compost::effects::vibrato_holder<T>(d, depth, rate); return sprout::compost::effects::vibrato_holder<T>(d, depth, rate);
} }
}; };

View file

@ -54,12 +54,12 @@ namespace sprout {
public: public:
template<typename LAdaptor, typename RAdaptor> template<typename LAdaptor, typename RAdaptor>
SPROUT_CONSTEXPR sprout::compost::formats::effect_each_holder<LAdaptor, RAdaptor> SPROUT_CONSTEXPR sprout::compost::formats::effect_each_holder<LAdaptor, RAdaptor>
operator()(LAdaptor const& left_adaptor, RAdaptor const& right_adaptor) { operator()(LAdaptor const& left_adaptor, RAdaptor const& right_adaptor) const {
return sprout::compost::formats::effect_each_holder<LAdaptor, RAdaptor>(left_adaptor, right_adaptor); return sprout::compost::formats::effect_each_holder<LAdaptor, RAdaptor>(left_adaptor, right_adaptor);
} }
template<typename Adaptor> template<typename Adaptor>
SPROUT_CONSTEXPR sprout::compost::formats::effect_each_holder<Adaptor> SPROUT_CONSTEXPR sprout::compost::formats::effect_each_holder<Adaptor>
operator()(Adaptor const& adaptor) { operator()(Adaptor const& adaptor) const {
return sprout::compost::formats::effect_each_holder<Adaptor>(adaptor); return sprout::compost::formats::effect_each_holder<Adaptor>(adaptor);
} }
}; };

View file

@ -35,7 +35,7 @@ namespace sprout {
public: public:
template<typename Adaptor> template<typename Adaptor>
SPROUT_CONSTEXPR sprout::compost::formats::effect_left_holder<Adaptor> SPROUT_CONSTEXPR sprout::compost::formats::effect_left_holder<Adaptor>
operator()(Adaptor const& adaptor) { operator()(Adaptor const& adaptor) const {
return sprout::compost::formats::effect_left_holder<Adaptor>(adaptor); return sprout::compost::formats::effect_left_holder<Adaptor>(adaptor);
} }
}; };

View file

@ -35,7 +35,7 @@ namespace sprout {
public: public:
template<typename Adaptor> template<typename Adaptor>
SPROUT_CONSTEXPR sprout::compost::formats::effect_right_holder<Adaptor> SPROUT_CONSTEXPR sprout::compost::formats::effect_right_holder<Adaptor>
operator()(Adaptor const& adaptor) { operator()(Adaptor const& adaptor) const {
return sprout::compost::formats::effect_right_holder<Adaptor>(adaptor); return sprout::compost::formats::effect_right_holder<Adaptor>(adaptor);
} }
}; };

View file

@ -39,7 +39,7 @@ namespace sprout {
public: public:
template<typename Adaptor, typename Difference> template<typename Adaptor, typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::adapt_drop_holder<Adaptor, Difference> SPROUT_CONSTEXPR sprout::adaptors::adapt_drop_holder<Adaptor, Difference>
operator()(Adaptor const& adaptor, Difference distance) { operator()(Adaptor const& adaptor, Difference distance) const {
return sprout::adaptors::adapt_drop_holder<Adaptor, Difference>(adaptor, distance); return sprout::adaptors::adapt_drop_holder<Adaptor, Difference>(adaptor, distance);
} }
}; };

View file

@ -39,7 +39,7 @@ namespace sprout {
public: public:
template<typename Adaptor, typename Difference> template<typename Adaptor, typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::adapt_drop_end_holder<Adaptor, Difference> SPROUT_CONSTEXPR sprout::adaptors::adapt_drop_end_holder<Adaptor, Difference>
operator()(Adaptor const& adaptor, Difference distance) { operator()(Adaptor const& adaptor, Difference distance) const {
return sprout::adaptors::adapt_drop_end_holder<Adaptor, Difference>(adaptor, distance); return sprout::adaptors::adapt_drop_end_holder<Adaptor, Difference>(adaptor, distance);
} }
}; };

View file

@ -64,12 +64,12 @@ namespace sprout {
public: public:
template<typename Adaptor, typename Difference1, typename Difference2> template<typename Adaptor, typename Difference1, typename Difference2>
SPROUT_CONSTEXPR sprout::adaptors::adapt_offset_holder<Adaptor, Difference1, Difference2> SPROUT_CONSTEXPR sprout::adaptors::adapt_offset_holder<Adaptor, Difference1, Difference2>
operator()(Adaptor const& adaptor, Difference1 from_begin, Difference2 from_end) { operator()(Adaptor const& adaptor, Difference1 from_begin, Difference2 from_end) const {
return sprout::adaptors::adapt_offset_holder<Adaptor, Difference1, Difference2>(adaptor, from_begin, from_end); return sprout::adaptors::adapt_offset_holder<Adaptor, Difference1, Difference2>(adaptor, from_begin, from_end);
} }
template<typename Adaptor, typename Difference> template<typename Adaptor, typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::adapt_offset_holder<Adaptor, Difference> SPROUT_CONSTEXPR sprout::adaptors::adapt_offset_holder<Adaptor, Difference>
operator()(Adaptor const& adaptor, Difference from_begin) { operator()(Adaptor const& adaptor, Difference from_begin) const {
return sprout::adaptors::adapt_offset_holder<Adaptor, Difference>(adaptor, from_begin); return sprout::adaptors::adapt_offset_holder<Adaptor, Difference>(adaptor, from_begin);
} }
}; };

View file

@ -39,7 +39,7 @@ namespace sprout {
public: public:
template<typename Adaptor, typename Difference> template<typename Adaptor, typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::adapt_take_holder<Adaptor, Difference> SPROUT_CONSTEXPR sprout::adaptors::adapt_take_holder<Adaptor, Difference>
operator()(Adaptor const& adaptor, Difference distance) { operator()(Adaptor const& adaptor, Difference distance) const {
return sprout::adaptors::adapt_take_holder<Adaptor, Difference>(adaptor, distance); return sprout::adaptors::adapt_take_holder<Adaptor, Difference>(adaptor, distance);
} }
}; };

View file

@ -39,7 +39,7 @@ namespace sprout {
public: public:
template<typename Adaptor, typename Difference> template<typename Adaptor, typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::adapt_take_end_holder<Adaptor, Difference> SPROUT_CONSTEXPR sprout::adaptors::adapt_take_end_holder<Adaptor, Difference>
operator()(Adaptor const& adaptor, Difference distance) { operator()(Adaptor const& adaptor, Difference distance) const {
return sprout::adaptors::adapt_take_end_holder<Adaptor, Difference>(adaptor, distance); return sprout::adaptors::adapt_take_end_holder<Adaptor, Difference>(adaptor, distance);
} }
}; };

View file

@ -64,12 +64,12 @@ namespace sprout {
public: public:
template<typename Adaptor, typename Difference1, typename Difference2> template<typename Adaptor, typename Difference1, typename Difference2>
SPROUT_CONSTEXPR sprout::adaptors::adapt_window_holder<Adaptor, Difference1, Difference2> SPROUT_CONSTEXPR sprout::adaptors::adapt_window_holder<Adaptor, Difference1, Difference2>
operator()(Adaptor const& adaptor, Difference1 to_first, Difference2 to_last) { operator()(Adaptor const& adaptor, Difference1 to_first, Difference2 to_last) const {
return sprout::adaptors::adapt_window_holder<Adaptor, Difference1, Difference2>(adaptor, to_first, to_last); return sprout::adaptors::adapt_window_holder<Adaptor, Difference1, Difference2>(adaptor, to_first, to_last);
} }
template<typename Adaptor, typename Difference> template<typename Adaptor, typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::adapt_window_holder<Adaptor, Difference> SPROUT_CONSTEXPR sprout::adaptors::adapt_window_holder<Adaptor, Difference>
operator()(Adaptor const& adaptor, Difference to_first) { operator()(Adaptor const& adaptor, Difference to_first) const {
return sprout::adaptors::adapt_window_holder<Adaptor, Difference>(adaptor, to_first); return sprout::adaptors::adapt_window_holder<Adaptor, Difference>(adaptor, to_first);
} }
}; };

View file

@ -75,7 +75,7 @@ namespace sprout {
public: public:
template<typename Predicate> template<typename Predicate>
SPROUT_CONSTEXPR sprout::adaptors::adjacent_filter_holder<Predicate> SPROUT_CONSTEXPR sprout::adaptors::adjacent_filter_holder<Predicate>
operator()(Predicate pred) { operator()(Predicate pred) const {
return sprout::adaptors::adjacent_filter_holder<Predicate>(pred); return sprout::adaptors::adjacent_filter_holder<Predicate>(pred);
} }
}; };

View file

@ -83,7 +83,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::alternate_holder< SPROUT_CONSTEXPR sprout::adaptors::alternate_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::alternate_holder< return sprout::adaptors::alternate_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(

View file

@ -95,12 +95,12 @@ namespace sprout {
public: public:
template<typename Value, typename Compare> template<typename Value, typename Compare>
SPROUT_CONSTEXPR sprout::adaptors::clamp_holder<Value, Compare> SPROUT_CONSTEXPR sprout::adaptors::clamp_holder<Value, Compare>
operator()(Value const& low, Value const& up, Compare comp) { operator()(Value const& low, Value const& up, Compare comp) const {
return sprout::adaptors::clamp_holder<Value, Compare>(low, up, comp); return sprout::adaptors::clamp_holder<Value, Compare>(low, up, comp);
} }
template<typename Value> template<typename Value>
SPROUT_CONSTEXPR sprout::adaptors::clamp_holder<Value> SPROUT_CONSTEXPR sprout::adaptors::clamp_holder<Value>
operator()(Value const& low, Value const& up) { operator()(Value const& low, Value const& up) const {
return sprout::adaptors::clamp_holder<Value>(low, up); return sprout::adaptors::clamp_holder<Value>(low, up);
} }
}; };

View file

@ -67,7 +67,7 @@ namespace sprout {
public: public:
template<typename Result> template<typename Result>
SPROUT_CONSTEXPR typename sprout::adaptors::copy_holder<Result const> SPROUT_CONSTEXPR typename sprout::adaptors::copy_holder<Result const>
operator()(Result const& result) { operator()(Result const& result) const {
return typename sprout::adaptors::copy_holder<Result const>(result); return typename sprout::adaptors::copy_holder<Result const>(result);
} }
}; };

View file

@ -38,7 +38,7 @@ namespace sprout {
public: public:
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::drop_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::drop_holder<Difference>
operator()(Difference distance) { operator()(Difference distance) const {
return sprout::adaptors::drop_holder<Difference>(distance); return sprout::adaptors::drop_holder<Difference>(distance);
} }
}; };

View file

@ -38,7 +38,7 @@ namespace sprout {
public: public:
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::drop_end_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::drop_end_holder<Difference>
operator()(Difference distance) { operator()(Difference distance) const {
return sprout::adaptors::drop_end_holder<Difference>(distance); return sprout::adaptors::drop_end_holder<Difference>(distance);
} }
}; };

View file

@ -75,7 +75,7 @@ namespace sprout {
public: public:
template<typename Predicate> template<typename Predicate>
SPROUT_CONSTEXPR sprout::adaptors::filter_holder<Predicate> SPROUT_CONSTEXPR sprout::adaptors::filter_holder<Predicate>
operator()(Predicate pred) { operator()(Predicate pred) const {
return sprout::adaptors::filter_holder<Predicate>(pred); return sprout::adaptors::filter_holder<Predicate>(pred);
} }
}; };

View file

@ -75,7 +75,7 @@ namespace sprout {
public: public:
template<typename Index> template<typename Index>
SPROUT_CONSTEXPR sprout::adaptors::indexed_holder<Index> SPROUT_CONSTEXPR sprout::adaptors::indexed_holder<Index>
operator()(Index index) { operator()(Index index) const {
return sprout::adaptors::indexed_holder<Index>(index); return sprout::adaptors::indexed_holder<Index>(index);
} }
}; };

View file

@ -78,7 +78,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::joint_holder< SPROUT_CONSTEXPR sprout::adaptors::joint_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::joint_holder< return sprout::adaptors::joint_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(

View file

@ -87,7 +87,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::merge_holder< SPROUT_CONSTEXPR sprout::adaptors::merge_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::merge_holder< return sprout::adaptors::merge_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(
@ -99,7 +99,7 @@ namespace sprout {
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare
> >
operator()(RRange&& range, Compare comp) { operator()(RRange&& range, Compare comp) const {
return sprout::adaptors::merge_holder< return sprout::adaptors::merge_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare

View file

@ -103,7 +103,7 @@ namespace sprout {
public: public:
template<typename... Adaptors> template<typename... Adaptors>
SPROUT_CONSTEXPR sprout::adaptors::pipe_holder<Adaptors...> SPROUT_CONSTEXPR sprout::adaptors::pipe_holder<Adaptors...>
operator()(Adaptors const&... adaptors) { operator()(Adaptors const&... adaptors) const {
return sprout::adaptors::pipe_holder<Adaptors...>(adaptors...); return sprout::adaptors::pipe_holder<Adaptors...>(adaptors...);
} }
}; };

View file

@ -74,7 +74,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::adaptors::remove_holder<T> SPROUT_CONSTEXPR sprout::adaptors::remove_holder<T>
operator()(T const& value) { operator()(T const& value) const {
return sprout::adaptors::remove_holder<T>(value); return sprout::adaptors::remove_holder<T>(value);
} }
}; };

View file

@ -74,7 +74,7 @@ namespace sprout {
public: public:
template<typename Predicate> template<typename Predicate>
SPROUT_CONSTEXPR sprout::adaptors::remove_if_holder<Predicate> SPROUT_CONSTEXPR sprout::adaptors::remove_if_holder<Predicate>
operator()(Predicate pred) { operator()(Predicate pred) const {
return sprout::adaptors::remove_if_holder<Predicate>(pred); return sprout::adaptors::remove_if_holder<Predicate>(pred);
} }
}; };

View file

@ -79,7 +79,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::adaptors::replace_holder<T> SPROUT_CONSTEXPR sprout::adaptors::replace_holder<T>
operator()(T const& old_value, T const& new_value) { operator()(T const& old_value, T const& new_value) const {
return sprout::adaptors::replace_holder<T>(old_value, new_value); return sprout::adaptors::replace_holder<T>(old_value, new_value);
} }
}; };

View file

@ -81,7 +81,7 @@ namespace sprout {
public: public:
template<typename Predicate, typename T> template<typename Predicate, typename T>
SPROUT_CONSTEXPR sprout::adaptors::replace_if_holder<Predicate, T> SPROUT_CONSTEXPR sprout::adaptors::replace_if_holder<Predicate, T>
operator()(Predicate pred, T const& new_value) { operator()(Predicate pred, T const& new_value) const {
return sprout::adaptors::replace_if_holder<Predicate, T>(pred, new_value); return sprout::adaptors::replace_if_holder<Predicate, T>(pred, new_value);
} }
}; };

View file

@ -106,7 +106,7 @@ namespace sprout {
Value const& frequency = 1, Value const& frequency = 1,
Value const& amplitude = 1, Value const& amplitude = 1,
Value const& phase = 0 Value const& phase = 0
) ) const
{ {
return sprout::adaptors::sawtooth_wave_range<Value>(frequency, amplitude, phase); return sprout::adaptors::sawtooth_wave_range<Value>(frequency, amplitude, phase);
} }

View file

@ -87,7 +87,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::set_difference_holder< SPROUT_CONSTEXPR sprout::adaptors::set_difference_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::set_difference_holder< return sprout::adaptors::set_difference_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(
@ -99,7 +99,7 @@ namespace sprout {
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare
> >
operator()(RRange&& range, Compare comp) { operator()(RRange&& range, Compare comp) const {
return sprout::adaptors::set_difference_holder< return sprout::adaptors::set_difference_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare

View file

@ -87,7 +87,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::set_intersection_holder< SPROUT_CONSTEXPR sprout::adaptors::set_intersection_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::set_intersection_holder< return sprout::adaptors::set_intersection_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(
@ -99,7 +99,7 @@ namespace sprout {
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare
> >
operator()(RRange&& range, Compare comp) { operator()(RRange&& range, Compare comp) const {
return sprout::adaptors::set_intersection_holder< return sprout::adaptors::set_intersection_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare

View file

@ -87,7 +87,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::set_symmetric_difference_holder< SPROUT_CONSTEXPR sprout::adaptors::set_symmetric_difference_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::set_symmetric_difference_holder< return sprout::adaptors::set_symmetric_difference_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(
@ -99,7 +99,7 @@ namespace sprout {
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare
> >
operator()(RRange&& range, Compare comp) { operator()(RRange&& range, Compare comp) const {
return sprout::adaptors::set_symmetric_difference_holder< return sprout::adaptors::set_symmetric_difference_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare

View file

@ -87,7 +87,7 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::set_union_holder< SPROUT_CONSTEXPR sprout::adaptors::set_union_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range) { operator()(RRange&& range) const {
return sprout::adaptors::set_union_holder< return sprout::adaptors::set_union_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
>( >(
@ -99,7 +99,7 @@ namespace sprout {
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare
> >
operator()(RRange&& range, Compare comp) { operator()(RRange&& range, Compare comp) const {
return sprout::adaptors::set_union_holder< return sprout::adaptors::set_union_holder<
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type, typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type,
Compare Compare

View file

@ -106,7 +106,7 @@ namespace sprout {
Value const& frequency = 1, Value const& frequency = 1,
Value const& amplitude = 1, Value const& amplitude = 1,
Value const& phase = 0 Value const& phase = 0
) ) const
{ {
return sprout::adaptors::sinusoidal_range<Value>(frequency, amplitude, phase); return sprout::adaptors::sinusoidal_range<Value>(frequency, amplitude, phase);
} }

View file

@ -115,7 +115,7 @@ namespace sprout {
public: public:
template<typename Size> template<typename Size>
SPROUT_CONSTEXPR typename sprout::adaptors::size_enum_holder<Size> SPROUT_CONSTEXPR typename sprout::adaptors::size_enum_holder<Size>
operator()(Size size, bool omit_last = false) { operator()(Size size, bool omit_last = false) const {
return typename sprout::adaptors::size_enum_holder<Size>(size, omit_last); return typename sprout::adaptors::size_enum_holder<Size>(size, omit_last);
} }
}; };

View file

@ -115,7 +115,7 @@ namespace sprout {
Value const& amplitude = 1, Value const& amplitude = 1,
Value const& phase = 0, Value const& phase = 0,
Value const& duty = 0.5 Value const& duty = 0.5
) ) const
{ {
return sprout::adaptors::square_wave_range<Value>(frequency, amplitude, phase, duty); return sprout::adaptors::square_wave_range<Value>(frequency, amplitude, phase, duty);
} }

View file

@ -86,12 +86,12 @@ namespace sprout {
public: public:
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::step_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::step_holder<Difference>
operator()(Difference width) { operator()(Difference width) const {
return sprout::adaptors::step_holder<Difference>(width); return sprout::adaptors::step_holder<Difference>(width);
} }
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::step_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::step_holder<Difference>
operator()(Difference width, typename std::common_type<Difference>::type init) { operator()(Difference width, typename std::common_type<Difference>::type init) const {
return sprout::adaptors::step_holder<Difference>(width, init); return sprout::adaptors::step_holder<Difference>(width, init);
} }
}; };

View file

@ -38,7 +38,7 @@ namespace sprout {
public: public:
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::take_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::take_holder<Difference>
operator()(Difference distance) { operator()(Difference distance) const {
return sprout::adaptors::take_holder<Difference>(distance); return sprout::adaptors::take_holder<Difference>(distance);
} }
}; };

View file

@ -38,7 +38,7 @@ namespace sprout {
public: public:
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::take_end_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::take_end_holder<Difference>
operator()(Difference distance) { operator()(Difference distance) const {
return sprout::adaptors::take_end_holder<Difference>(distance); return sprout::adaptors::take_end_holder<Difference>(distance);
} }
}; };

View file

@ -136,7 +136,7 @@ namespace sprout {
BinaryFunction, BinaryFunction,
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
> >
operator()(RRange&& range, BinaryFunction func) { operator()(RRange&& range, BinaryFunction func) const {
return sprout::adaptors::transform_holder< return sprout::adaptors::transform_holder<
BinaryFunction, BinaryFunction,
typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type typename std::remove_reference<typename sprout::lvalue_reference<RRange>::type>::type
@ -147,7 +147,7 @@ namespace sprout {
} }
template<typename UnaryFunction> template<typename UnaryFunction>
SPROUT_CONSTEXPR sprout::adaptors::transform_holder<UnaryFunction> SPROUT_CONSTEXPR sprout::adaptors::transform_holder<UnaryFunction>
operator()(UnaryFunction func) { operator()(UnaryFunction func) const {
return sprout::adaptors::transform_holder<UnaryFunction>(func); return sprout::adaptors::transform_holder<UnaryFunction>(func);
} }
}; };

View file

@ -106,7 +106,7 @@ namespace sprout {
Value const& frequency = 1, Value const& frequency = 1,
Value const& amplitude = 1, Value const& amplitude = 1,
Value const& phase = 0 Value const& phase = 0
) ) const
{ {
return sprout::adaptors::triangle_wave_range<Value>(frequency, amplitude, phase); return sprout::adaptors::triangle_wave_range<Value>(frequency, amplitude, phase);
} }

View file

@ -78,7 +78,7 @@ namespace sprout {
public: public:
template<typename Predicate> template<typename Predicate>
SPROUT_CONSTEXPR sprout::adaptors::unique_holder<Predicate> SPROUT_CONSTEXPR sprout::adaptors::unique_holder<Predicate>
operator()(Predicate pred) { operator()(Predicate pred) const {
return sprout::adaptors::unique_holder<Predicate>(pred); return sprout::adaptors::unique_holder<Predicate>(pred);
} }
}; };

View file

@ -72,7 +72,7 @@ namespace sprout {
public: public:
template<typename T> template<typename T>
SPROUT_CONSTEXPR sprout::adaptors::valued_holder<T> SPROUT_CONSTEXPR sprout::adaptors::valued_holder<T>
operator()(T const& param) { operator()(T const& param) const {
return sprout::adaptors::valued_holder<T>(param); return sprout::adaptors::valued_holder<T>(param);
} }
}; };

View file

@ -57,12 +57,12 @@ namespace sprout {
public: public:
template<typename Difference1, typename Difference2> template<typename Difference1, typename Difference2>
SPROUT_CONSTEXPR sprout::adaptors::window_holder<Difference1, Difference2> SPROUT_CONSTEXPR sprout::adaptors::window_holder<Difference1, Difference2>
operator()(Difference1 to_first, Difference2 to_last) { operator()(Difference1 to_first, Difference2 to_last) const {
return sprout::adaptors::window_holder<Difference1, Difference2>(to_first, to_last); return sprout::adaptors::window_holder<Difference1, Difference2>(to_first, to_last);
} }
template<typename Difference> template<typename Difference>
SPROUT_CONSTEXPR sprout::adaptors::window_holder<Difference> SPROUT_CONSTEXPR sprout::adaptors::window_holder<Difference>
operator()(Difference to_first) { operator()(Difference to_first) const {
return sprout::adaptors::window_holder<Difference>(to_first); return sprout::adaptors::window_holder<Difference>(to_first);
} }
}; };

View file

@ -1,6 +1,7 @@
#ifndef SPROUT_STRING_NPOS_HPP #ifndef SPROUT_STRING_NPOS_HPP
#define SPROUT_STRING_NPOS_HPP #define SPROUT_STRING_NPOS_HPP
#include <type_traits>
#include <sprout/config.hpp> #include <sprout/config.hpp>
#include <sprout/type_traits/is_uint.hpp> #include <sprout/type_traits/is_uint.hpp>
#include <sprout/type_traits/enabler_if.hpp> #include <sprout/type_traits/enabler_if.hpp>
@ -11,6 +12,11 @@ namespace sprout {
// npos // npos
// //
struct npos_t { struct npos_t {
public:
template<typename UIntType, typename sprout::enabler_if<sprout::is_uint<UIntType>::value>::type = sprout::enabler>
struct get
: public std::integral_constant<UIntType, UIntType(-1)>
{};
public: public:
template<typename UIntType, typename sprout::enabler_if<sprout::is_uint<UIntType>::value>::type = sprout::enabler> template<typename UIntType, typename sprout::enabler_if<sprout::is_uint<UIntType>::value>::type = sprout::enabler>
SPROUT_CONSTEXPR operator UIntType() const { SPROUT_CONSTEXPR operator UIntType() const {
@ -18,7 +24,7 @@ namespace sprout {
} }
}; };
namespace { namespace {
SPROUT_STATIC_CONSTEXPR sprout::npos_t npos{}; SPROUT_STATIC_CONSTEXPR sprout::npos_t npos = {};
} // anonymous-namespace } // anonymous-namespace
// //

View file

@ -76,7 +76,7 @@ namespace sprout {
{}; {};
#endif #endif
public: public:
SPROUT_STATIC_CONSTEXPR size_type npos = sprout::npos; SPROUT_STATIC_CONSTEXPR size_type npos = sprout::npos_t::get<size_type>::value;
SPROUT_STATIC_CONSTEXPR size_type static_size = N; SPROUT_STATIC_CONSTEXPR size_type static_size = N;
private: private:
template<sprout::index_t... Indexes> template<sprout::index_t... Indexes>

View file

@ -66,7 +66,7 @@ namespace sprout {
{}; {};
#endif #endif
public: public:
SPROUT_STATIC_CONSTEXPR size_type npos = sprout::npos; SPROUT_STATIC_CONSTEXPR size_type npos = sprout::npos_t::get<size_type>::value;
private: private:
const_pointer ptr_; const_pointer ptr_;
size_type len_; size_type len_;
@ -211,7 +211,7 @@ namespace sprout {
len_ -= n; len_ -= n;
} }
SPROUT_CONSTEXPR basic_string_ref SPROUT_CONSTEXPR basic_string_ref
remove_prefix(size_type n) { remove_prefix(size_type n) const {
return n > size() ? basic_string_ref(data() + size(), 0) return n > size() ? basic_string_ref(data() + size(), 0)
: basic_string_ref(data() + n, size() - n) : basic_string_ref(data() + n, size() - n)
; ;
@ -224,7 +224,7 @@ namespace sprout {
len_ -= n; len_ -= n;
} }
SPROUT_CONSTEXPR basic_string_ref SPROUT_CONSTEXPR basic_string_ref
remove_suffix(size_type n) { remove_suffix(size_type n) const {
return n > size() ? basic_string_ref(data(), 0) return n > size() ? basic_string_ref(data(), 0)
: basic_string_ref(data(), size() - n) : basic_string_ref(data(), size() - n)
; ;