(Folly/FBString) Use a lambda to throw an exception for NULL input
authorHannes Roth <hannesr@fb.com>
Thu, 27 Mar 2014 21:47:00 +0000 (14:47 -0700)
committerDave Watson <davejwatson@fb.com>
Mon, 31 Mar 2014 17:44:58 +0000 (10:44 -0700)
Summary:
This should be standard compliant. `__PRETTY_FUNCTION__` seems
unnecessary, it just prints `basic_fbstring`, might as well use that and
simplify the code.

Test Plan:
`fbconfig --platform-all=gcc-4.8.1-glibc-2.17-fb folly/test`
`fbmake runtests_dbg`
`fbmake runtests_opt`

`fbconfig --platform-all=gcc-4.7.1-glibc-2.14.1 folly/test`
`fbmake runtests_dbg`
`fbmake runtests_opt`

`fbconfig --clang folly/test`
`...`

Reviewed By: andrei.alexandrescu@fb.com

FB internal diff: D1243670

folly/FBString.h

index b9d45a98dc21aa0d6d6b23a1accd3b7444f31146..a768dec35c1a1f84b920d70b7a06adfea32c2c3f 100644 (file)
@@ -1054,12 +1054,13 @@ public:
   }
 
   /* implicit */ basic_fbstring(const value_type* s, const A& a = A())
   }
 
   /* implicit */ basic_fbstring(const value_type* s, const A& a = A())
-      : store_(s, s ? traits_type::length(s) : ({
-          basic_fbstring<char> err = __PRETTY_FUNCTION__;
-          err += ": null pointer initializer not valid";
-          std::__throw_logic_error(err.c_str());
-          0;
-      })) {
+      : store_(s, s
+          ? traits_type::length(s)
+          : [] {
+              std::__throw_logic_error(
+                "basic_fbstring: null pointer initializer not valid");
+              return 0;
+            }()) {
   }
 
   basic_fbstring(const value_type* s, size_type n, const A& a = A())
   }
 
   basic_fbstring(const value_type* s, size_type n, const A& a = A())