one more attempt at MSVC compatibility
diff --git a/theta/include/conditional_back_inserter.hpp b/theta/include/conditional_back_inserter.hpp
index 5e7f2ef..e9b0590 100644
--- a/theta/include/conditional_back_inserter.hpp
+++ b/theta/include/conditional_back_inserter.hpp
@@ -28,8 +28,8 @@
template <typename Container, typename Predicate>
class conditional_back_insert_iterator: public std::back_insert_iterator<Container> {
public:
- conditional_back_insert_iterator(Container& c, Predicate& p): std::back_insert_iterator<Container>(c), p(p) {}
- conditional_back_insert_iterator(Container& c, Predicate&& p): std::back_insert_iterator<Container>(c), p(std::forward<Predicate>(p)) {}
+ template<typename P>
+ conditional_back_insert_iterator(Container& c, P&& p): std::back_insert_iterator<Container>(c), p(std::forward<P>(p)) {}
conditional_back_insert_iterator& operator=(typename Container::const_reference value) {
if (p(value)) std::back_insert_iterator<Container>::operator=(value);
@@ -45,11 +45,6 @@
};
template<typename Container, typename Predicate>
-conditional_back_insert_iterator<Container, Predicate> conditional_back_inserter(Container& c, Predicate& p) {
- return conditional_back_insert_iterator<Container, Predicate>(c, p);
-}
-
-template<typename Container, typename Predicate>
conditional_back_insert_iterator<Container, Predicate> conditional_back_inserter(Container& c, Predicate&& p) {
return conditional_back_insert_iterator<Container, Predicate>(c, std::forward<Predicate>(p));
}