gpt4 book ai didi

c++ - bool 上的模板偏特化

转载 作者:行者123 更新时间:2023-11-30 03:36:01 26 4
gpt4 key购买 nike

我认为这是一个非常基本的问题,但我无法找到答案,即使是在 StackOverflow 上也是如此。很抱歉,如果你想在阅读本文时打我。

我只想对 bool 值进行部分特化:

template < typename Object, bool Shared = false >
class Foo {

void bar();
};

template < typename Object >
void Foo<Object, true>::bar() {}

template < typename Object >
void Foo<Object, false>::bar() {}

int main() {

Foo<int> test;
return 0;
}

我认为这个想法是正确的,但我在这段代码中遗漏了一些东西(可能真的很愚蠢):

Test3.cpp:8:30: error: invalid use of incomplete type ‘class Foo<Object, true>’
void Foo<Object, true>::bar() {
^
Test3.cpp:2:7: note: declaration of ‘class Foo<Object, true>’
class Foo {
^~~
Test3.cpp:13:31: error: invalid use of incomplete type ‘class Foo<Object, false>’
void Foo<Object, false>::bar() {
^
Test3.cpp:2:7: note: declaration of ‘class Foo<Object, false>’
class Foo {

最佳答案

您的模板定义了一个类,而不是一个函数。这意味着您必须专门化该类,而不是类方法:

template < typename Object >
class Foo<Object, false> {
void bar();
};

template < typename Object >
class Foo<Object, true> {
void bar();
};

关于c++ - bool 上的模板偏特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com