ICU-21215 Add default constructor to FormattedNumberRange
diff --git a/icu4c/source/i18n/unicode/numberrangeformatter.h b/icu4c/source/i18n/unicode/numberrangeformatter.h
index 091fc66..00cfa23 100644
--- a/icu4c/source/i18n/unicode/numberrangeformatter.h
+++ b/icu4c/source/i18n/unicode/numberrangeformatter.h
@@ -641,6 +641,15 @@
      */
     UNumberRangeIdentityResult getIdentityResult(UErrorCode& status) const;
 
+#ifndef U_HIDE_DRAFT_API
+    /**
+     * Default constructor; makes an empty FormattedNumberRange.
+     * @draft ICU 70
+     */
+    FormattedNumberRange()
+        : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
+#endif
+
     /**
      * Copying not supported; use move constructor instead.
      */
diff --git a/icu4c/source/test/intltest/numbertest_range.cpp b/icu4c/source/test/intltest/numbertest_range.cpp
index fcf2a0e..6f622a3 100644
--- a/icu4c/source/test/intltest/numbertest_range.cpp
+++ b/icu4c/source/test/intltest/numbertest_range.cpp
@@ -827,6 +827,9 @@
     assertEquals("FormattedNumberRange move constructor", u"1,00–5,00 $US", result.toString(status));
     result = l1.formatFormattableRange(3, 6, status);
     assertEquals("FormattedNumberRange move assignment", u"3,00–6,00 $US", result.toString(status));
+    FormattedNumberRange fnrdefault;
+    fnrdefault.toString(status);
+    status.expectErrorAndReset(U_INVALID_STATE_ERROR);
 }
 
 void NumberRangeFormatterTest::toObject() {