這是一個非常基本的問題,我認爲,但我無法找到答案,即使在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 <> void Foo :: bar(){}'[Demo](http://coliru.stacked-crooked.com/a/18f9ddb32cf72ddd) –
Jarod42