在以下两个模板函数中,一个尝试受到更多约束:
template<typename T>
concept SmallVar = (sizeof(T) <= sizeof(int));
void print(SmallVar auto t) { // 1
std::cout << t << std::endl;
}
void print(const auto& t) { // 2
std::cout << t << std::endl;
}
当使用 int 调用时,Clang 和 GCC 不同:
int main() {
print(6); // clang accepts and prefers 1, gcc sees here ambiguity
}
哪一个是对的?