2017-07-03 63 views
2

我想做一個靜態斷言,檢查類型A是否可以添加到類型B.是否有任何方法來檢查模板類型A是否可添加到模板類型B編譯時間? A和B真的可以做任何事情。靜態斷言是否可以添加操作

+0

這取決於究竟你的意思_addable_。 –

回答

4

隨着is_detected,你可以這樣做:

template <typename LHS, typename RHS> 
using sum_t = decltype(std::declval<LHS>() + std::declval<RHS>()); 

template <typename LHS, typename RHS> 
using has_sum = is_detected<sum_t, LHS, RHS>; 
+0

有趣的是,沒有'is_detected_v'。儘管如此,還是可以做 'template constexpr auto has_sum_v = std :: experimental :: is_detected :: value;'。 。 。 'static_assert(has_sum_v );' –

相關問題