Can someone explain to me why gcc outputs this error?
 /media/projects/src/libs/GUIElements/include/GUIElements/TemplatedFlagManager.h:195:
 error: ‘ClearQueue’ was not declared in this scope
             ClearQueue<QueueType>();
               ^     
/media/projects/src/libs/GUIElements/include/GUIElements/TemplatedFlagManager.h:35: error: 
    ‘typename std::enable_if<(I < sizeof... (Tp)), void>::type for_each(std::tuple<_Args2 ...>&, FuncT) 
    [with long unsigned int I = 1ul; FuncT = FlagNotifier<Args>::AddSubscriber(QSharedPointer<FlagSubscriber>)
    [with Args = {SystemFlags::EAppFlags, SystemFlags::EQueueFlags, SystemFlags::EMessageFlags}]::<lambda(auto:2)>;
    Tp = {QList<SystemFlags::EAppFlags>, QList<SystemFlags::EQueueFlags>, QList<SystemFlags::EMessageFlags>}; 
    typename std::enable_if<(I < sizeof... (Tp)), void>::type = void]’,
    declared using local type ‘FlagNotifier<Args>::AddSubscriber(QSharedPointer<FlagSubscriber>)
    [with Args = {SystemFlags::EAppFlags, SystemFlags::EQueueFlags, SystemFlags::EMessageFlags}]::<lambda(auto:2)>’, 
    is used but never defined [-fpermissive]
    for_each(std::tuple<Tp...>& t, FuncT f)
    ^
in this code:
template <typename... Args>
class FlagNotifier
{
....
    void AddSubscriber(QSharedPointer<FlagSubscriber> sub)
    {
        for_each(flagQueues, [&](auto queue){
        using QueueType = typename decltype(queue)::value_type;
        for(auto flag : queue)
        {
            auto& group = std::get<get_index<QueueType, Args...>::value>(flagGroups);
            group[flag].push_back(sub);
        }
        ClearQueue<QueueType>();
        sub->ApplyState();
    });
    }   
    template <typename T>
    void ClearQueue(){
        auto& flagQueue = std::get<get_index<T, Args...>::value>(this->flagQueues);
        flagQueue.clear();
    }
    std::tuple<QList<Args>...> flagQueues;
    std::tuple<QHash<Args, QList<QSharedPointer<FlagSubscriber>>>...> flagGroups;
}
msvc is perfectly fine with it. The "auto queue" is actually a member of tuple
std::tuple<QList<Args>...> flagQueues;
so the type should be easily deducible and yet this obscure warning...
P.S.
for_each is taken from this question: stackoverflow.com/a/6894436/1143162
get_index from this: stackoverflow.com/a/18063608/1143162
 
     
    