C++ dlib优化和boost multi_阵列不能与gcc包含在同一文件中。(启用_if)

C++ dlib优化和boost multi_阵列不能与gcc包含在同一文件中。(启用_if),c++,gcc,boost,enable-if,dlib,C++,Gcc,Boost,Enable If,Dlib,我正在写一个程序来估计多维函数。这样,我使用dlib/optimization.h进行优化,使用boost/multi_array.hpp存储数据。当我试图同时包含它们时,代码将不会使用gcc编译。它与叮当声一起工作。我使用c++11和Ceemple来处理链接,就我所知,这很好 下面是一个简单的例子 #include <dlib/optimization.h> #include <boost/multi_array.hpp> #include <iostream&

我正在写一个程序来估计多维函数。这样,我使用dlib/optimization.h进行优化,使用boost/multi_array.hpp存储数据。当我试图同时包含它们时,代码将不会使用gcc编译。它与叮当声一起工作。我使用c++11和Ceemple来处理链接,就我所知,这很好

下面是一个简单的例子

#include <dlib/optimization.h> 
#include <boost/multi_array.hpp>
#include <iostream>

int main() {

std::cout << "Hello World!" << std::endl;

}      
#包括
#包括
#包括
int main(){

std::难道这很奇怪。dlib复制粘贴了boost代码还是什么?我希望不是,那将是非常愚蠢的。dlib中有一个enable_if模板,但它在dlib命名空间中。不应该有冲突。“包含自”中的文件名列表等非常相关,请编辑您的帖子以还原它们。粘贴编译器的输出。我根据要求添加了“包含自”列表。谢谢。请使用较新版本的dlib。
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:28:10: error: redefinition  of default argument for ‘class T’
struct enable_if_c {
      ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from     /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from     /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategies.h:8,
             from /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from        /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
   /opt/ceemple/include/dlib/dlib/enable_if.h:28:21: note: original  definition appeared here
 template <bool B, class T = void>
                 ^
 In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from  /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
 /usr/include/boost/utility/enable_if.hpp:33:10: error: redefinition  of ‘struct boost::enable_if_c<false, T>’
struct enable_if_c<false, T> {};
      ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from    /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
              from   /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
              from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from    /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
 /opt/ceemple/include/dlib/dlib/enable_if.h:34:10: error: previous  definition of ‘struct boost::enable_if_c<false, T>’
 struct enable_if_c<false, T> {};
      ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from   /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:36:10: error: redefinition  of default argument for ‘class T’
struct enable_if : public enable_if_c<Cond::value, T> {};
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from   /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from   /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from    /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/enable_if.h:36:25: note: original  definition appeared here
template <class Cond, class T = void> 
                      ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from   /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from   /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:39:10: error: redefinition  of ‘struct boost::lazy_enable_if_c<B, T>’
struct lazy_enable_if_c {
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from    /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from    /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/enable_if.h:40:10: error: previous  definition of ‘struct boost::lazy_enable_if_c<B, T>’
struct lazy_enable_if_c {
       ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from  /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
 /usr/include/boost/utility/enable_if.hpp:44:10: error: redefinition  of ‘struct boost::lazy_enable_if_c<false, T>’
struct lazy_enable_if_c<false, T> {};
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from   /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from   /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
 /opt/ceemple/include/dlib/dlib/enable_if.h:45:10: error: previous  definition of ‘struct boost::lazy_enable_if_c<false, T>’
struct lazy_enable_if_c<false, T> {};
       ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from   /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:47:10: error: redefinition   of ‘struct boost::lazy_enable_if<Cond, T>’
   struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T>  {};
         ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from     /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from     /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/enable_if.h:48:10: error: previous     definition of ‘struct boost::lazy_enable_if<Cond, T>’
struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
       ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from     /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from     /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:51:10: error: redefinition  of default argument for ‘class T’
struct disable_if_c {
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from   /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:  
 /opt/ceemple/include/dlib/dlib/enable_if.h:51:21: note: original  definition appeared here
template <bool B, class T = void>
                  ^
 In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from  /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from   /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
 /usr/include/boost/utility/enable_if.hpp:56:10: error: redefinition  of ‘struct boost::disable_if_c<true, T>’
struct disable_if_c<true, T> {};
       ^
 In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from   /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
 /opt/ceemple/include/dlib/dlib/enable_if.h:57:10: error: previous  definition of ‘struct boost::disable_if_c<true, T>’
struct disable_if_c<true, T> {};
       ^
 In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from  /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from     /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
 /usr/include/boost/utility/enable_if.hpp:59:10: error: redefinition    of default argument for ‘class T’
struct disable_if : public disable_if_c<Cond::value, T> {};
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from     /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from   /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/enable_if.h:59:25: note: original definition appeared here
template <class Cond, class T = void> 
                      ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from  /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:62:10: error: redefinition  of ‘struct boost::lazy_disable_if_c<B, T>’
struct lazy_disable_if_c {
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from   /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/enable_if.h:63:10: error: previous  definition of ‘struct boost::lazy_disable_if_c<B, T>’
struct lazy_disable_if_c {
       ^
In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from   /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:67:10: error: redefinition  of ‘struct boost::lazy_disable_if_c<true, T>’
struct lazy_disable_if_c<true, T> {};
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/enable_if.h:68:10: error: previous  definition of ‘struct boost::lazy_disable_if_c<true, T>’
struct lazy_disable_if_c<true, T> {};
       ^
 In file included from /usr/include/boost/multi_array/view.hpp:27:0,
             from  /usr/include/boost/multi_array/multi_array_ref.hpp:26,
             from /usr/include/boost/multi_array.hpp:26,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/utility/enable_if.hpp:70:10: error: redefinition  of ‘struct boost::lazy_disable_if<Cond, T>’
struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
       ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:78:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from   /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
 /opt/ceemple/include/dlib/dlib/enable_if.h:71:10: error: previous  definition of ‘struct boost::lazy_disable_if<Cond, T>’
struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
       ^
In file included from  /usr/include/boost/type_traits/is_copy_constructible.hpp:18:0,
             from /usr/include/boost/type_traits.hpp:53,
             from /usr/include/boost/multi_array.hpp:30,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:5:
/usr/include/boost/noncopyable.hpp:23:9: error: redefinition of  ‘class boost::noncopyable_::noncopyable’
class noncopyable
      ^
In file included from /opt/ceemple/include/dlib/dlib/algs.h:77:0,
             from  /opt/ceemple/include/dlib/dlib/matrix/matrix_exp.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix/matrix.h:6,
             from /opt/ceemple/include/dlib/dlib/matrix.h:6,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization_search_strategie    s.h:8,
             from  /opt/ceemple/include/dlib/dlib/optimization/optimization.h:9,
             from /opt/ceemple/include/dlib/dlib/optimization.h:6,
             from  /opt/ceemple/workspaceCeemple/user/Interbank_lending_linux/main.cpp:1:
/opt/ceemple/include/dlib/dlib/noncopyable.h:18:15: error: previous  definition of ‘class boost::noncopyable_::noncopyable’
     class noncopyable
           ^