From 019163b585b506c0b4edd1f7cb51b860248d9530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20M=C3=BCller?= Date: Mon, 1 Mar 2021 18:30:28 +0100 Subject: [PATCH] Allow duplicate definitions of templates --- src/cpp_entity_index.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cpp_entity_index.cpp b/src/cpp_entity_index.cpp index e51b722..6278f22 100644 --- a/src/cpp_entity_index.cpp +++ b/src/cpp_entity_index.cpp @@ -26,8 +26,9 @@ void cpp_entity_index::register_definition(cpp_entity_id { // already in map, override declaration auto& value = result.first->second; - if (value.is_definition && !is_template_specialization(value.entity->kind())) - // allow duplicate definition of template specializations as a workaround for MacOS + if (value.is_definition && !is_template(value.entity->kind())) + // allow duplicate definition of templates + // this handles things such as SFINAE throw duplicate_definition_error(); value.is_definition = true; value.entity = entity; @@ -55,8 +56,8 @@ void cpp_entity_index::register_namespace(cpp_entity_id ns_[std::move(id)].push_back(ns); } -type_safe::optional_ref cpp_entity_index::lookup(const cpp_entity_id& id) const - noexcept +type_safe::optional_ref cpp_entity_index::lookup( + const cpp_entity_id& id) const noexcept { std::lock_guard lock(mutex_); auto iter = map_.find(id);