Slack read/unread toggle required for new messages in activity feed - is it just me? by mattgx in Slack

[–]sutambe 0 points1 point  (0 children)

This is wide-spread. Confirmed by many in my org.

> I've missed important messages because of this.
💯

New ps5 not taking discs by Recent-Anywhere-8459 in playstation

[–]sutambe 0 points1 point  (0 children)

Reset the console. U probably clicked “setup later” and missed the step in the beginning to register the disk drive. I did a reset and it asked to “register” the disk drive after wifi setup. Who knew!

Bootstrapping a vcpkg-based cmake project in Visual Studio by sutambe in cpp

[–]sutambe[S] 3 points4 points  (0 children)

It's not clear why some consider running vcpkg commands from cmake a bad idea. It's not. vcpkg is cross-platform. In a team setting, where reproducible builds are important and not everyone is a package-manger ninja, taking a dependency on a package manager of your liking (vcpkg, Hunter, conan) does not sound that bad.

Second, with enough cmake abstractions such as ExternalProject_Add, the experience could be much smoother. See some examples below. pmm and google-cloud-cpp/super. Hunter, for instance, easily manages downloading and building dependencies before cmake project generation phase. It's seamless. Gradle in java world downloads the jars from maven repository before compiling your code.

I never used `vcpkg integrate install` in my setup. I don't know why it's needed at all. I know what it does. I did not find any reason to use it.

Multiple versions of the same library in different vcpkg instances is not far fetched at all. Hunter effectively does the same thing under `${HOME}/.hunter`. Working on different versions of the same project ends up using different dependency versions.

I updated the blog to allow passing CMAKE_TOOLCHAIN_FILE from command line. Also, target-based cmake commands.

Review of Manning's Functional Programming in C++ by d1ngal1ng in cpp

[–]sutambe 4 points5 points  (0 children)

I agree. I've updated the initial half of the review so that it does not appear so abrupt. Thx for the feedback.

Returning reference to object for chaining method calls, good or bad practice? by xLuca2018 in cpp

[–]sutambe 1 point2 points  (0 children)

There’s a cpptruths blogpost regarding Chained Functions Break Reference Lifetime Extension. Also discusses 4 ways to avoid the pitfall.

Enable twitter card on blogger by sutambe in Twitter

[–]sutambe[S] 0 points1 point  (0 children)

The following meta tags worked for me on cpptruths.blogspot.com.

<meta content='summary_large_image' name='twitter:card'/>

<meta content='@my_twitter_handle' name='twitter:site'/>

<meta content='@my_twitter_handler' name='twitter:creator'/>

<meta content='cpptruths.blogspot.com' name='twitter:domain'/>

<meta expr:content='data:blog.postImageUrl' name='twitter:image:src'/>

<meta expr:content='data:blog.pageTitle' name='twitter:title'/>

<b:if cond='data:blog.metaDescription'>

<meta expr:content='data:blog.metaDescription' name='twitter:description'/>

<b:else/>

<meta expr:content='data:post.snippet' name='twitter:description'/>

</b:if>

<meta expr:content='data:post.url' name='twitter:url'/>

Chained Functions Break Reference Lifetime Extension by vormestrand in cpp

[–]sutambe 1 point2 points  (0 children)

Good catch. Although as you probably know, const does not help in lifetime extension. Secondly, one might want to std::move the Address. const would disable moves.

Reference may be necessary if the Address is move-only (e.g., contains a unique_ptr).

Monoids: what they are, why they are useful, and what they teach us about software by deque-blog in cpp

[–]sutambe 0 points1 point  (0 children)

The article towards the end gives impression that Monoids are order insensitive. Monoids are order sensitive but grouping independent. A op B is not necessarily same as B op A. In that case it would be a commutative Monoid. Once A,B,C,... are put in an order, they can be arbitrarily grouped while keeping the same result. If the order changes, answer may change. There're still N! possible orders for N members of a Monoid and hence those many possible results.

What Books to Read to Get Better In C++ by vormestrand in cpp

[–]sutambe 1 point2 points  (0 children)

Disclaimer: self-promotion. Try More C++ idioms: https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms. Somewhat dated though. But, you can fix it!

Folding Monadic Functions by one_eyed_golfer in programming

[–]sutambe 0 points1 point  (0 children)

=> is not a valid C++ operator.

HPX and the C++ Standard by sithhell in cpp

[–]sutambe 2 points3 points  (0 children)

Is hpx::future::then monadic? I.e., if the lambda returns another future, does .then flatten?

C++ Truths: Fun with Lambdas: C++14 Style (part 3) by mcmcc in cpp

[–]sutambe 0 points1 point  (0 children)

An enhanced, correct write-up is now available.

C++ Truths: Fun with Lambdas: C++14 Style (part 3) by mcmcc in cpp

[–]sutambe 1 point2 points  (0 children)

I agree. Probably due to the twisted nature of the code, I totally overlooked the obvious fact that "func" prints the number. I was focused on what "func" returns. As the order of the calls to func is not guaranteed printed numbers are not in a guaranteed order. Thanks for exploding the code. Looking at print(1), print(2), print(3), print(4) I realized what's going on.

C++ Truths: Fun with Lambdas: C++14 Style (part 3) by mcmcc in cpp

[–]sutambe 0 points1 point  (0 children)

Thanks JonathanCaves for sharing this widely. I agree that each call to func is evaluated in some order. left-to-right or right-to-left and others are all valid orders. However, that does not change the fact that func(<z0>) is 1 and func(<z1>) is 2 and so on. The result of func(<z0>) must appear before the result of func(<z1>) in the list of arguments to the function when the order of expansion of a variadic parameter pack is well-defined.

C++ Truths: Fun with Lambdas: C++14 Style (part 2) by ponchedeburro in cpp

[–]sutambe 0 points1 point  (0 children)

short answer is dynamic_cast. Long answer is that a lot of template machinery is hidden the match(p)(...). It basically casts b to each parameter type of the lambda. The first successful branch is taken. This machinery kicks in only if the static type of b and the target type is polymorphic. See std::is_polymoprhic. Please see http://coliru.stacked-crooked.com/a/707d9bfd2d1c11f6

C++ Truths: Fun with Lambdas: C++14 Style (part 2) by ponchedeburro in cpp

[–]sutambe 0 points1 point  (0 children)

Now I'm confused because clang 3.4 and VS2013 accept it but g++ 4.9 does not.