[all-commits] [llvm/llvm-project] d2124b: [flang] Remove default argument from function temp...
Michael Kruse via All-commits
all-commits at lists.llvm.org
Tue Nov 16 22:06:38 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: d2124bfccf5982f5fa0f9b2c2253fc0bb65beb4c
https://github.com/llvm/llvm-project/commit/d2124bfccf5982f5fa0f9b2c2253fc0bb65beb4c
Author: Michael Kruse <llvm-project at meinersbur.de>
Date: 2021-11-17 (Wed, 17 Nov 2021)
Changed paths:
M flang/include/flang/Decimal/decimal.h
Log Message:
-----------
[flang] Remove default argument from function template specialization. NFC.
Patch D113697 added default function arguments to template specializations of `ConvertToBinary`.
According to https://en.cppreference.com/w/cpp/language/template_specialization this not allowed:
> Default function arguments cannot be specified in explicit specializations of function templates, member function templates, and member functions of class templates when the class is implicitly instantiated.
It happens to compile with gcc, clang and msvc 14.30 (Visual Studio 2022), but not msvc 14.29 (Visual Studio 2020). Even for the compilers that syntactically accept it, the default argument will never be used (only the default argument of the template declaration). From https://en.cppreference.com/w/cpp/language/function_template
> Note that only non-template and primary template overloads participate in overload resolution.
That is, the explicit function template specialization is not added to the overload candidate set. Only after all the parameter types are known, are the explicit specializations chosen, at which point the default function argument is ignored.
Also see D85657.
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D114032
More information about the All-commits
mailing list