[cfe-dev] Possible bug with decltype and access modifer order
David Irvine
david.irvine at maidsafe.net
Mon Jan 14 13:01:45 PST 2013
Please see this stackoverflow question for an overview.
http://stackoverflow.com/questions/14188535/clang-access-modifier-order-and-decltype
The issue seems to be that the private members are not visible at
compilation to the decltype call. This is a minimum example (from the
question). (I am the questioner in this case). This also seems to appear
as a 'bug' in gcc but not msvc (12). I am not
100% convinced but cannot find in the standard why this will not work. I
hope this helps.
#include <future>#include <iostream>#include <thread>#include <vector>
template <class T> T &self(T &t) { return t; }template<typename T>
struct Dependent { };
template<typename T>class Synchronised : Dependent<T>{
public:
explicit Synchronised(T t = T()) : t_(t) {}
template<typename Functor>
auto operator()(Functor functor) const ->decltype(functor(self(*this).t_)) {
//auto operator()(Functor functor) const ->decltype(functor(this->t_)) {
std::lock_guard<std::mutex> lock(mutex_);
return functor(t_);
}
private:
mutable T t_;
mutable std::mutex mutex_;};
int main() {
Synchronised<std::string> sync_string("Start\n");
std::vector<std::future<void>> futures;}
Best Regards
David Irvine
<http://maidsafe.net>maidsafe.net Limited is a limited liability company
incorporated in Scotland with number SC297540. VAT Registered 889 0608 77.
Registered Office: 72 Templehill, Troon, KA10 6BE.
Telephone Scotland: +44 1292 750020.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130114/23db09d3/attachment.html>
More information about the cfe-dev
mailing list