https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106825
--- Comment #2 from Mark Millard <markmigm at gmail dot com> --- An tiny example that avoids all involvement of libstdc++ is (showing g++12 from FreeBSD in the comments, instead of c++ for fedora --but both contexts fail): # more module_template_specialization_failure.cppm // g++12 -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -xc++-system-header memory // g++12 -std=c++20 -fmodules-ts -g -fPIC -xc++ -c module_template_specialization_failure.cppm export module module_template_specialization_intf; export template<int c> int test(); export template<> int test<0>() { return -1; }; export template<> int test<1>() { return -2; }; # more module_template_specialization_failure.cpp // g++12 -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -xc++-system-header memory // g++12 -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -fPIC -c -xc++ module_template_specialization_failure.cppm // g++12 -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -fPIC -omain_using_plugin module_template_specialization_failure.cpp import module_template_specialization_intf; int main() { return test<0>()-test<1>(); } The sequence and result is: # c++ -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -xc++-system-header memory # c++ -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -fPIC -c -xc++ module_template_specialization_failure.cppm # c++ -std=c++20 -pedantic -Wall -Wextra -fmodules-ts -fPIC -omain_using_plugin module_template_specialization_failure.cpp /usr/bin/ld: /tmp/ccmyKNjk.o: in function `main': module_template_specialization_failure.cpp:(.text+0xc): undefined reference to `_ZW35module_template_specialization_intf4testILi0EEiv' /usr/bin/ld: module_template_specialization_failure.cpp:(.text+0x14): undefined reference to `_ZW35module_template_specialization_intf4testILi1EEiv' /usr/bin/ld: /tmp/ccmyKNjk.o: in function `_GLOBAL__sub_I_module_template_specialization_failure.cpp': module_template_specialization_failure.cpp:(.text+0x30): undefined reference to `_ZGIW35module_template_specialization_intf' collect2: error: ld returned 1 exit status