bkietz commented on a change in pull request #9444:
URL: https://github.com/apache/arrow/pull/9444#discussion_r573088486



##########
File path: cpp/src/arrow/util/bit_block_counter.h
##########
@@ -292,9 +413,10 @@ class ARROW_EXPORT OptionalBinaryBitBlockCounter {
 // Functional-style bit block visitors.
 
 template <typename VisitNotNull, typename VisitNull>
-Status VisitBitBlocks(const std::shared_ptr<Buffer>& bitmap_buf, int64_t 
offset,
-                      int64_t length, VisitNotNull&& visit_not_null,
-                      VisitNull&& visit_null) {
+static inline Status VisitBitBlocks(const std::shared_ptr<Buffer>& bitmap_buf,

Review comment:
       SGTM.
   
   I was actually surprised to learn that this has an effect:
   - When linking object files which each have `inline void noop(){}` the 
symbol in the resulting shared object will be non-global so it can be `strip`'d 
out. The same is true for
     ```
     static void noop(){}
     __attribute__((visibility("hidden"))) void noop(){}
     namespace{  void noop(){}  }
     ```
   - When linking object files which each have `template <typename T> void 
noop(){}` the symbol will be weak but *global*, so it survives `strip`. By 
contrast the symbol for `template <typename T> static void noop(){}` will be 
non-global.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to