JSONCPP_ISTREAM
diff --git a/include/json/reader.h b/include/json/reader.h
index 70d9505..720e638 100644
--- a/include/json/reader.h
+++ b/include/json/reader.h
@@ -99,7 +99,7 @@
 
   /// \brief Parse from input stream.
   /// \see Json::operator>>(std::istream&, Json::Value&).
-  bool parse(std::istream& is, Value& root, bool collectComments = true);
+  bool parse(JSONCPP_ISTREAM& is, Value& root, bool collectComments = true);
 
   /** \brief Returns a user friendly string that list errors in the parsed
    * document.
@@ -366,7 +366,7 @@
   */
 bool JSON_API parseFromStream(
     CharReader::Factory const&,
-    std::istream&,
+    JSONCPP_ISTREAM&,
     Value* root, std::string* errs);
 
 /** \brief Read from 'sin' into 'root'.
@@ -393,7 +393,7 @@
  \throw std::exception on parse error.
  \see Json::operator<<()
 */
-JSON_API std::istream& operator>>(std::istream&, Value&);
+JSON_API JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM&, Value&);
 
 } // namespace Json
 
diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index 4dc8823..bfa484b 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -2007,7 +2007,7 @@
 // global functions
 
 bool parseFromStream(
-    CharReader::Factory const& fact, std::istream& sin,
+    CharReader::Factory const& fact, JSONCPP_ISTREAM& sin,
     Value* root, std::string* errs)
 {
   JSONCPP_OSTRINGSTREAM ssin;
@@ -2020,7 +2020,7 @@
   return reader->parse(begin, end, root, errs);
 }
 
-std::istream& operator>>(std::istream& sin, Value& root) {
+JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM& sin, Value& root) {
   CharReaderBuilder b;
   std::string errs;
   bool ok = parseFromStream(b, sin, &root, &errs);