On 24/07/2017 16:18, Edward Diener via Boost wrote:
On 7/24/2017 8:29 AM, Andrey Semashev via Boost wrote:
On 07/24/17 14:37, Edward Diener via Boost wrote:
On 7/23/2017 2:50 PM, John Maddock via Boost wrote:
Folks, I think I'm looking to add a new C++11 defect macro, but don't know what the feature is called, nor can I see a way of detecting it with clang's __has_feature function.
The code I want to enable involves function overloading based on a decltype return type as in:
I never realized that function overloading could occur based on any return type. I always thought it had to be based on the parameter types. Is this part of the C+11 standard ? Where in the standard is this specified ?
I think it's not about overloading but about disabling function template instantiations via SFINAE.
I am glad to hear that. I misinterpreted the original message and probably should have realized it. Thanks !
It's sort of about both actually - we're using SFINAE to select between two overloads based on the properties of the argument types (sort of poor man's Concepts), so we can write: template <class Arg> auto foo(const Arg&) -> decltype(expression-involving-type-Arg) and that function overload will be considered only if the expression inside the decltype compiles. You may have to go through heroics to get the return type correct (use of the comma operator for example), but it's a very easy way to select between function overloads based on which concepts the argument types adhere to. John. --- This email has been checked for viruses by AVG. http://www.avg.com