Tag: 参数依赖查找

如何编写启用ADL的追踪返回types或noexcept规范?

想象一下,我正在写一些容器模板什么的。 而现在是专门为它的std::swap 。 作为一个好公民,我将通过做这样的事情来启用ADL: template <typename T> void swap(my_template<T>& x, my_template<T>& y) { using std::swap; swap(x.something_that_is_a_T, y.something_that_is_a_T); } 这非常整齐。 直到我想添加一个exception规范。 只要T swap被noexcept ,我的swap就是noexcept noexcept 。 所以,我会写这样的: template <typename T> void swap(my_template<T>& x, my_template<T>& y) noexcept(noexcept(swap(std::declval<T>(), std::declval<T>()))) 问题是,在那里swap需要ADL发现swap或std::swap 。 我该如何处理?