arhoads opened a new issue, #311: URL: https://github.com/apache/pulsar-client-cpp/issues/311
### Search before asking - [X] I searched in the [issues](https://github.com/apache/pulsar-client-cpp/issues) and found nothing similar. ### Version CentOS 7 at commit afb2fcb. ### Minimal reproduce step Compile with devtoolset-7 (gcc 7.3.1) ### What did you expect to see? No warnings ### What did you see instead? ```In file included from pulsar-client-cpp/lib/RetryableOperationCache.h:25:0, from pulsar-client-cpp/lib/RetryableLookupService.h:24, from pulsar-client-cpp/lib/ClientImpl.cc:41: pulsar-client-cpp/lib/RetryableOperation.h: In instantiation of ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::LookupService::LookupResult]::<lambda(const class boost::system::error_code&)>’: pulsar-client-cpp/lib/RetryableOperation.h:109:13: required from ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::LookupService::LookupResult]’ pulsar-client-cpp/lib/RetryableOperation.h:84:46: required from ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = pulsar::LookupService::LookupResult; pulsar::TimeDuration = boost::posix_time::time_duration]::<lambda(enum pulsar::Result, const struct pulsar::LookupService::LookupResult&)>’ pulsar-client-cpp/lib/RetryableOperation.h:84:9: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = pulsar::LookupService::LookupResult; pulsar::TimeDuration = boost::posix_time::time_duration]’ pulsar-client-cpp/lib/RetryableOperation.h:64:23: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::run() [with T = pulsar::LookupService::LookupResult]’ pulsar-client-cpp/lib/RetryableOperationCache.h:73:18: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperationCache<T>::run(const string&, std::function<pulsar::Future<pulsar::Result, T>()>&&) [with T = pulsar::LookupService::LookupResult; std::string = std::basic_string<char>]’ pulsar-client-cpp/lib/RetryableLookupService.h:55:100: required from here pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::LookupService::LookupResult]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::LookupService::LookupResult]::<lambda(const boost::system::error_code&)>::<this capture>’ [-Werror=attributes] timer_->async_wait([this, weakSelf, nextRemainingTime](const boost::system::error_code& ec) { ^ pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::LookupService::LookupResult]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::LookupService::LookupResult]::<lambda(const boost::system::error_code&)>::<weakSelf capture>’ [-Werror=attributes] pulsar-client-cpp/lib/RetryableOperation.h: In instantiation of ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<pulsar::LookupDataResult>]::<lambda(const class boost::system::error_code&)>’: pulsar-client-cpp/lib/RetryableOperation.h:109:13: required from ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<pulsar::LookupDataResult>]’ pulsar-client-cpp/lib/RetryableOperation.h:84:46: required from ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = std::shared_ptr<pulsar::LookupDataResult>; pulsar::TimeDuration = boost::posix_time::time_duration]::<lambda(enum pulsar::Result, const class std::shared_ptr<pulsar::LookupDataResult>&)>’ pulsar-client-cpp/lib/RetryableOperation.h:84:9: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = std::shared_ptr<pulsar::LookupDataResult>; pulsar::TimeDuration = boost::posix_time::time_duration]’ pulsar-client-cpp/lib/RetryableOperation.h:64:23: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::run() [with T = std::shared_ptr<pulsar::LookupDataResult>]’ pulsar-client-cpp/lib/RetryableOperationCache.h:73:18: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperationCache<T>::run(const string&, std::function<pulsar::Future<pulsar::Result, T>()>&&) [with T = std::shared_ptr<pulsar::LookupDataResult>; std::string = std::basic_string<char>]’ pulsar-client-cpp/lib/RetryableLookupService.h:61:95: required from here pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<pulsar::LookupDataResult>]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<pulsar::LookupDataResult>]::<lambda(const boost::system::error_code&)>::<this capture>’ [-Werror=attributes] pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<pulsar::LookupDataResult>]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<pulsar::LookupDataResult>]::<lambda(const boost::system::error_code&)>::<weakSelf capture>’ [-Werror=attribute ] pulsar-client-cpp/lib/RetryableOperation.h: In instantiation of ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]::<lambda(const class boost::system::error_code&)>’: pulsar-client-cpp/lib/RetryableOperation.h:109:13: required from ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]’ pulsar-client-cpp/lib/RetryableOperation.h:84:46: required from ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = std::shared_ptr<std::vector<std::basic_string<char> > >; pulsar::TimeDuration = boost::posix_time::time_duration]::<lambda(enum pulsar::Result, const class std::shared_ptr<std::vector<std::basic_string<char> > >&)>’ pulsar-client-cpp/lib/RetryableOperation.h:84:9: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = std::shared_ptr<std::vector<std::basic_string<char> > >; pulsar::TimeDuration = boost::posix_time::time_duration]’ pulsar-client-cpp/lib/RetryableOperation.h:64:23: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::run() [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]’ pulsar-client-cpp/lib/RetryableOperationCache.h:73:18: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperationCache<T>::run(const string&, std::function<pulsar::Future<pulsar::Result, T>()>&&) [with T = std::shared_ptr<std::vector<std::basic_string<char> > >; std::string = std::basic_string<char>]’ pulsar-client-cpp/lib/RetryableLookupService.h:68:101: required from here pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]::<lambda(const boost::system::error_code&)>::<this capture>’ [-Werror=attributes] pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = std::shared_ptr<std::vector<std::basic_string<char> > >]::<lambda(const boost::system::error_code&)>::<weakSelf capture>’ [-Werror=attributes] pulsar-client-cpp/lib/RetryableOperation.h: In instantiation of ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::SchemaInfo]::<lambda(const class boost::system::error_code&)>’: pulsar-client-cpp/lib/RetryableOperation.h:109:13: required from ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::SchemaInfo]’ pulsar-client-cpp/lib/RetryableOperation.h:84:46: required from ‘struct pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = pulsar::SchemaInfo; pulsar::TimeDuration = boost::posix_time::time_duration]::<lambda(enum pulsar::Result, const class pulsar::SchemaInfo&)>’ pulsar-client-cpp/lib/RetryableOperation.h:84:9: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration) [with T = pulsar::SchemaInfo; pulsar::TimeDuration = boost::posix_time::time_duration]’ pulsar-client-cpp/lib/RetryableOperation.h:64:23: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperation<T>::run() [with T = pulsar::SchemaInfo]’ pulsar-client-cpp/lib/RetryableOperationCache.h:73:18: required from ‘pulsar::Future<pulsar::Result, T> pulsar::RetryableOperationCache<T>::run(const string&, std::function<pulsar::Future<pulsar::Result, T>()>&&) [with T = pulsar::SchemaInfo; std::string = std::basic_string<char>]’ pulsar-client-cpp/lib/RetryableLookupService.h:74:10: required from here pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::SchemaInfo]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::SchemaInfo]::<lambda(const boost::system::error_code&)>::<this capture>’ [-Werror=attributes] pulsar-client-cpp/lib/RetryableOperation.h:109:66: error: ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::SchemaInfo]::<lambda(const boost::system::error_code&)>’ declared with greater visibility than the type of its field ‘pulsar::RetryableOperation<T>::runImpl(pulsar::TimeDuration)::<lambda(pulsar::Result, const T&)> [with T = pulsar::SchemaInfo]::<lambda(const boost::system::error_code&)>::<weakSelf capture>’ [-Werror=attributes]``` ### Anything else? This seems to be a bug that is fixed in GCC 8. To work around it I can wrap the RetryableOperation class in `#pragma GCC visibility push(default)` and `#pragma GCC visibility pop`, but I am unsure on the correct way to fix the warning. ### Are you willing to submit a PR? - [X] I'm willing to submit a PR! -- 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. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
