Wenn der folgende Code dann innerhalb eines Namensraumes platziert ist seine nicht funktioniert, aber es ist ohne Namespace arbeiten gut ...Warum Typ Traits funktioniert nicht innerhalb Namensraum (std :: enable_if) - c 11 ++
template <typename T,typename _F>
inline typename std::enable_if< is_iterable<T>::value >::type
for_all_ele(T&& arr,_F&& fn)
{
for(auto &x:arr)
for_all_ele(x,fn);
}
template <typename T,typename _F>
inline typename std::enable_if< not is_iterable<T>::value >::type
for_all_ele(T&& x,_F&& fn)
{
fn(x);
}
is_iterable wird darüber definiert ...
der vollständige Code ist hier: http://ideone.com/goJ0Zf
Bis jetzt alles, was ich ist die Template-Spezialisierung von ‚for_all_ele‘ für skalare Daten innerhalb Namensraum finden kann, wird nicht erkannt .. .
Bitte füge einen [MCVE] in deine Frage ein, auch wenn einer im Link ist. Das bedeutet, den Code in der Verbindung zu nehmen und die Teile zu entfernen, die keine Rolle spielen. Beachten Sie, dass der Code * über * innerhalb und außerhalb eines Namespace funktioniert (in dem es nichts tut). – Yakk