模板专业化,windows vs gcc上的不同行为?

 手机用户2502887703 发布于 2023-02-11 20:42

我正在寻找GCC与MSVC不同的概述或描述,用于编译+链接具有特化的模板类.例如,这种类型的东西适用于GCC但不适用于MSVC:

// Base.h
template  struct Base {
    template   QString  makeTitle(const G* obj){obj->CompilerError();}
    };

// in Foo.cpp
template <> template  QString Base::makeTitle(const G* obj) {  return mystr(); }
void SomeFunc() {
  std::cout<<  Base().makeTitle() ;
}

并且解决方案往往是我必须在使用之前在Base.h中声明特化,或者在Windows上存在链接错误.MSVC如何/为什么隐式地实例化,以及GCC如何/为什么对某些cpp文件中声明的特化是健壮的?

相关问题,注意一般'使用前声明'要求: 模板专业化 - MSVC和GCC/MinGW之间的不同行为

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有