I have been listening to some rants on YouTube against people learning a bunch of languages calling themselves "linguists".

I'm personally interested in both linguistics and languages as a hobby but I have no official training and certainly no qualifications in either.

My instinct was that the ranter was kind of right in his opinion that people who speak many languages are not linguists. But I was uncomfortable with his opinion that you had to have certain pieces of paper to be called a linguist, I think "post doctorate" from memory.

So I looked up "linguist" in some imperfect online dictionaries and was surprised to find both senses. Here's the defs from oxforddictionaries.com (chosen at random):


  
  A person skilled in foreign languages.
  A person who studies linguistics.
  


Now I don't have access to a better dictionary on historical principles from my current location.

I would like to know which of these senses is the original one?

My original opinion was the latter sense but on thinking about it I now expect it to be the former. I doubt the word would be a back-formation from "linguistics".

As a side question, would the first sense now be considered to be colloquial or at least nontechnical or outdated?


Question: Why can't my C++ compiler deduce template argument for boost function?
Answer: While C++ lambdas are strictly monomorphic, they are merely shorthand for function objects (aka functors), and in general functors can be polymorphic; i.e., their call operators can be overloaded or templated. As a result, functors (and, consequently, lambdas) are never implicitly convertible to templated std::function&lt;&gt; (or boost::function&lt;&gt;) instances because functors' operator() argument types are not automatically inferable.

To phrase it slightly differently, the natural type of your lambda expression is a functor with a parameterless constructor and an operator() with the signature void operator ()(int) const. However obvious this fact may be to you and I, it's not automatically inferrable that ArgT should resolve to int because lambdas are functors and functors' operator()s are possible to overload and template.

TL;DR: What you want isn't possible.