chrono_literals不是名称空间名称

时间:2016-03-08 00:49:38

标签: c++ gcc

我正在尝试构建一个名为darkstar的私有FFXI服务器程序。我试图在FreeBSD 10.2稳定版本上构建它。我正在从端口使用GCC 5.3来尝试构建它。

使用这个使CC = gcc5 CXX = g ++ 5 CPP =" gcc5-E"调用正确版本的GCC / G ++。

这是我被踢出的错误代码。

src/common/../common/../common/cbasetypes.h:336:22: error: 'chrono_literals'         is not a namespace-name
  using namespace std::chrono_literals;
                  ^
src/common/../common/../common/cbasetypes.h:336:37: error: expected namespace-name before ';' token
  using namespace std::chrono_literals;

我已经检查过以确保chrono实际上位于/ usr / include / c ++ / v1 / chrono的正确位置。

在抛出错误的地方,这是来自cbasetypes.h中第336行的代码以及之后的几行。

#include <chrono>

using namespace std::chrono_literals;
using server_clock = std::chrono::steady_clock;
using time_point = server_clock::time_point;
using duration = server_clock::duration;

虽然我认为这个社区将是一个很好的起点,但不知道如何解决这个错误。

提前谢谢!

2 个答案:

答案 0 :(得分:9)

你拼错了std::literals::chrono_literals

请记住确保您根据C ++ 14编译源代码(C ++ 11中未提供计时文字)。

答案 1 :(得分:0)

这对我有用:

using namespace std::literals::chrono_literals;

并将其添加到CMakeLists.txt中:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)