- Notifications
You must be signed in to change notification settings - Fork14.5k
Closed
Description
template<typename T>
concept SmallVar = (sizeof(T) <= sizeof(int));
void print(SmallVar auto t) {
std::cout << t << std::endl;
}
void print(const auto& t) {
std::cout << t << std::endl;
}
int main() {
print(6); // clang accepts, gcc sees here ambiguity
}
https://godbolt.org/z/P89dPsaKa
It seems that gcc is right in rejecting the code on ambiguity, as the function parameters that positionally correspond between the two templates are not of the same type - thus neither template should be more specialized than the other.
https://eel.is/c++draft/temp.func.order#6.2.2:
Otherwise, [...] or if the function parameters that positionally correspond between the two templates are not of the same type, neither template is more specialized than the other.
Metadata
Metadata
Assignees
Type
Projects
Status
No status