diff --git a/cpp/ycm/CandidateRepository.cpp b/cpp/ycm/CandidateRepository.cpp
index 5498fd81..f22a1208 100644
--- a/cpp/ycm/CandidateRepository.cpp
+++ b/cpp/ycm/CandidateRepository.cpp
@@ -16,6 +16,7 @@
// along with YouCompleteMe. If not, see .
#include "CandidateRepository.h"
+#include "Candidate.h"
#include "standard.h"
#include "Utils.h"
diff --git a/cpp/ycm/CandidateRepository.h b/cpp/ycm/CandidateRepository.h
index c56be943..d643c0d3 100644
--- a/cpp/ycm/CandidateRepository.h
+++ b/cpp/ycm/CandidateRepository.h
@@ -18,8 +18,6 @@
#ifndef CANDIDATEREPOSITORY_H_K9OVCMHG
#define CANDIDATEREPOSITORY_H_K9OVCMHG
-#include "Candidate.h"
-
#include
#include
#include
@@ -30,6 +28,8 @@
namespace YouCompleteMe
{
+class Candidate;
+
typedef boost::unordered_map< std::string, const Candidate* >
CandidateHolder;
diff --git a/cpp/ycm/IdentifierCompleter.cpp b/cpp/ycm/IdentifierCompleter.cpp
index b0dc7044..a1ad4a81 100644
--- a/cpp/ycm/IdentifierCompleter.cpp
+++ b/cpp/ycm/IdentifierCompleter.cpp
@@ -18,6 +18,7 @@
#include "IdentifierCompleter.h"
#include "standard.h"
#include "CandidateRepository.h"
+#include "Candidate.h"
#include "Utils.h"
#include