Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有必要使用export对导出实体的模板专门化进行注释?_C++_C++20_C++ Modules - Fatal编程技术网

C++ 是否有必要使用export对导出实体的模板专门化进行注释?

C++ 是否有必要使用export对导出实体的模板专门化进行注释?,c++,c++20,c++-modules,C++,C++20,C++ Modules,…或者在模块接口单元声明它们就足够了吗 test.cpp: module; #include <iostream> export module M; export template<typename> class T { public: void foo() const { std::cout << "T" << std::endl; } }; // export <-- NOT exported te

…或者在模块接口单元声明它们就足够了吗

test.cpp:

module;

#include <iostream>

export module M;

export
template<typename>
class T
{
public:
  void foo() const
    { std::cout << "T" << std::endl; }
};

// export <-- NOT exported
template<>
class T<int>
{
public:
  void foo() const
    { std::cout << "T<int>" << std::endl; }
};
模块;
#包括
出口模块M;
出口
模板
T类
{
公众:
void foo()常量

{std::cout导出只影响名称查找和链接。这两者都与任何类型的模板专门化或实例化无关,因此它们永远不需要导出。

这里的标准是这样说的。我认为其目的是不需要
导出
,因为部分专门化不需要
导出()@cpprearner我看到你开门了。我会留意的。谢谢。
import M;

int main()
{
  T<int> x; 
  x.foo();
  return 0;
}
$ rm -f gcm.cache/* && $(HOME)/gcc-master/bin/g++ -O3 -fmodules-ts test.cpp main.cpp -o foo && ./foo
T<int>

$ $(HOME)/gcc-master/bin/g++ --version
g++ (GCC) 11.0.0 20210128 (experimental)