Dưới đây là những gì tôi muốn làm:Cách tốt hơn để vô hiệu hóa khấu trừ tham số mẫu dựa trên đối số cho các chức năng?
template <typename T> void f(DisableDeduction<T> obj) {std::cout << obj;}
// Here DisableDeduction<T> aliases T, but in a such way
// that would prevent compiler from deducing T based
// on provided argument.
/* ... */
f<int>(1); // Works.
f(1); // Error, can't deduce template parameter based on argument.
Đây là cách tôi đang đạt được điều đó:
template <typename T> struct DisableDeduction_Internal {using type = T;};
template <typename T> using DisableDeduction = typename DisableDeduction_Internal<T>::type;
Nó hoạt động hoàn hảo (như mô tả), nhưng nó giới thiệu thêm một loại helper.
Nhưng tôi có thể đạt được kết quả tương tự không có loại bổ sung không?
'std :: enable_if_t '? –
Jarod42
@ Jarod42, bạn có muốn biến điều đó thành câu trả lời bằng ví dụ làm việc không? –