C ++在同一名称空间中找不到类

时间:2015-07-10 23:31:24

标签: c++ namespaces

更新:重现错误的最小代码: 在TypeTraits.hpp中:

namespace fl
{
    namespace utilities
    {
        template <class T>
        struct remove_reference
        {
            using type = T;
        };

        template <class T>
        struct remove_reference<T&>
        {
            using type = T;
        };

        template <class T>
        struct remove_reference<T&&>
        {
            using type = T;
        };
    }
}

在TypeTraits.h中

#include "TypeTraits.hpp"
namespace ftd
{
    template <class T> using remove_reference = fl::utilities::remove_reference<T>;
}

在Utility.h中:

#include "TypeTraits.h"
namespace ftd
{
    template <class T>
    constexpr T&& forward(typename remove_reference<T>::type& t) noexcept
    {
        return static_cast<T&&>(t);
    }

    template <class T>
    constexpr T&& forward(typename remove_reference<T>::type&& t) noexcept
    {
        return static_cast<T&&>(t);
    }
}

首次使用转发功能: 在List.hpp

#include "Utility.h"
namespace fl
{
    namespace containers
    {
        struct NodeBase { /* code... */ };
        /* code... */
        template <class T> struct ListNode : public NodeBase
        {

            /* Code... */
            template <class... Args>
            ListNode(Args&&... args) : m_data(ftd::forward<T>(args)...) {}
            /* Code... */
            T m_data;
        };
    }
}

错误:没有名为'remove_reference'的模板;你是说'std :: remove_reference'吗?

0 个答案:

没有答案